python@staticmethod&@classmethod&property的理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python@staticmethod&@classmethod&property的理解相关的知识,希望对你有一定的参考价值。
#!/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("[email protected]{},{}".format(myClass.age,age)) @classmethod #类方法不可以访问__init__构造方法中的变量,可在实例中调用,也可以类中调用 def sayhi3(self,test=‘实例中调用‘):#可传self,只能访问类变量,不可访问构造方法中的变量 print("[email protected]:{},{}".format(self.age,test)) @property #属性方法:必须要返回值,只可当属性使用,不可调用。把一个方法变成静态属性给予访问,实例中可访问 def sayhi4(self,name=‘实例中..‘):#可访问类变量及构造方法中的变量 print("[email protected]:{},age{},{}".format(self.name,self.age,name)) return self.name,self.age @property def sayhi5(self): print("[email protected]{}".format(self.age)) return self.age if __name__ == ‘__main__‘: m = myClass(‘dodo‘) m.sayhi1() #myClass.sayhi1() print("[email protected]调用-------") m.sayhi2(‘实例中调用...‘) m.sayhi2() myClass.sayhi2(‘类中外部调用...‘) myClass.sayhi2() print("[email protected]调用--------") m.sayhi3() myClass.sayhi3(‘类中调用‘) print("[email protected]调用-----------") print(m.sayhi4) print(myClass.sayhi4) print(myClass.sayhi5) print(m.sayhi5)
以上是关于python@staticmethod&@classmethod&property的理解的主要内容,如果未能解决你的问题,请参考以下文章
python--staticmethod(静态方法)和classmethod(类方法)
python @staticmethod 注解,静态方法,可以省略类里那个self参数
python @staticmethod和@classmethod的作用与区别