2020-08-17
阅读量:
811
Python中的装饰器及静态方法、类方法及实例方法的区别
@staticmethod 类中函数fun(self)都需要加self,但是用了这个装饰器后,就可以不要加self.此时,这个方法则可以被实例调用,也可以被类调用。但是不用这个装饰器,就只能被实例调用。因为这个函数没有self,其他函数有self。这个函数既不是实例的,也不是类的,但都能使用。
——是静态方法,处理与这个类的逻辑关联,该方法不可访问实例属性或类属性。
@classmethod 类装饰器,使用后该函数show(cls)传入cls,cls代表类本身。这样类自己可以调用,实例也可以调用。但是这个函数是类的。
——类方法:与本类相关的,方法属于类的,只能访问类属性,可以通过classmethod装饰器实现。
——实例方法:与实例对象相关的方法。可以访问实例属性,也可以访问类属性,但修改了类属性,类属性不变,仅仅是实例多了一个私有属性,私有属性就是修改后的值。
看下面这个例子:
为什么DemoClass.classPrint()不报错,DemoClass.objPrint()报错呢,就是因为DemoClass.classPrint()用了装饰器@classmethod,所以他能够被自己调用。而没有用,就不能。






评论(0)


暂无数据