@staticmethod 类静态方法:类下单独的函数,没有self参数,并且可以在类不进行实例化的情况下调用,可以不传递任何参数,不需要实例化,直接【类名.方法名()】,可通过类对象和类对象实例访问
@classmethod 类方法:接受的第一个参数不是self(类实例的指针),而是cls(当前类的具体类型),只能访问类变量,不能访问实例变量,不需要实例化,直接【类名.方法名()】,可通过类对象和类对象实例访问
@property 属性方法:将一个类方法转变成一个类属性,只读属性,并赋值
class testClass(object):
name ='玩具'
def __init__(self,name):
self.name = name
def objPrint(self,xy):
print('%s 是实例化方法:%s'%(self.name,xy))
@classmethod
def classPrint(cls,xy):
print('%s 是类方法,只能调类变量:%s'% (cls,xy))
print('%s 是类方法,只能调类变量:%s'% (cls.name,xy))
@staticmethod
def staticPrint(xy):
print('静态方法:%s'%xy)
obj = testClass('食物')#实例化类
obj.objPrint('方便面')
testClass.classPrint('火腿肠')
testClass.staticPrint('面包')
运行结果
食物 是实例化方法:方便面
<class '__main__.testClass'> 是类方法,只能调类变量:火腿肠
玩具 是类方法,只能调类变量:火腿肠
静态方法:面包