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

@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('面包')
运行结果


食物 是实例化方法:方便面
 是类方法,只能调类变量:火腿肠
玩具 是类方法,只能调类变量:火腿肠
静态方法:面包

 

你可能感兴趣的:(python面试)