当前位置: 代码迷 >> 综合 >> python的几个内置装饰器:@staticmethod、@classmethod和@property
  详细解决方案

python的几个内置装饰器:@staticmethod、@classmethod和@property

热度:29   发布时间:2024-01-25 00:45:52.0

@staticmethod  类静态方法:类下单独的函数,没有self参数,并且可以在类不进行实例化的情况下调用,可以不传递任何参数,不需要实例化,直接【类名.方法名()】,可通过类对象和类对象实例访问

@classmethod  类方法:接受的第一个参数不是self(类实例的指针),而是cls(当前类的具体类型),只能访问类变量,不能访问实例变量,不需要实例化,直接【类名.方法名()】,可通过类对象和类对象实例访问

@property         属性方法:将一个类方法转变成一个类属性,只读属性,并赋值

class testClass(object):name ='玩具'def __init__(self,name):self.name = namedef objPrint(self,xy):print('%s 是实例化方法:%s'%(self.name,xy))@classmethoddef classPrint(cls,xy):print('%s 是类方法,只能调类变量:%s'% (cls,xy))print('%s 是类方法,只能调类变量:%s'% (cls.name,xy))@staticmethoddef staticPrint(xy):print('静态方法:%s'%xy)obj = testClass('食物')#实例化类
obj.objPrint('方便面')
testClass.classPrint('火腿肠')
testClass.staticPrint('面包')
运行结果食物 是实例化方法:方便面
<class '__main__.testClass'> 是类方法,只能调类变量:火腿肠
玩具 是类方法,只能调类变量:火腿肠
静态方法:面包

 

  相关解决方案