标签:
#!/usr/bin/evn python #_*_coding:utf8_*_ class myClass(object): age = 30 def __init__(self,name): self.name = name def sayhi1(self):#只可实例中调用 print("sayhi1...name:{}.age:{}".format(self.name,self.age)) @staticmethod #静态方法不可访问构造方法中的变量,可在实例中调用,也可类中调用 def sayhi2(age=10):#不可以传self,即不可访问self.name,self.age print("sayhi2..@staticmethod..{},{}".format(myClass.age,age)) @classmethod #类方法不可以访问__init__构造方法中的变量,可在实例中调用,也可以类中调用 def sayhi3(self,test=‘实例中调用‘):#可传self,只能访问类变量,不可访问构造方法中的变量 print("sayhi3..@classmethod..age:{},{}".format(self.age,test)) @property #属性方法:必须要返回值,只可当属性使用,不可调用。把一个方法变成静态属性给予访问,实例中可访问 def sayhi4(self,name=‘实例中..‘):#可访问类变量及构造方法中的变量 print("sayhi4..@property..name:{},age{},{}".format(self.name,self.age,name)) return self.name,self.age @property def sayhi5(self): print("sayhi5..@property....age{}".format(self.age)) return self.age if __name__ == ‘__main__‘: m = myClass(‘dodo‘) m.sayhi1() #myClass.sayhi1() print("-----@staticmethod调用-------") m.sayhi2(‘实例中调用...‘) m.sayhi2() myClass.sayhi2(‘类中外部调用...‘) myClass.sayhi2() print("-----@classmethod调用--------") m.sayhi3() myClass.sayhi3(‘类中调用‘) print("-----@property调用-----------") print(m.sayhi4) print(myClass.sayhi4) print(myClass.sayhi5) print(m.sayhi5)
python@staticmethod&@classmethod&property的理解
标签:
原文地址:http://www.cnblogs.com/dodoye/p/5515864.html