面向对象中的装饰器
property
在执行类中的方法时。其结果的值看上去是一个数值。并不是一个动作时。可以在方法上加@property 使其变成属性
在调用时。不需要加括号。
class People: def __init__(self,name,weight,height): self.name=name self.weight=weight self.height=height @property def bmi(self): return self.weight / (self.height**2) p1=People('egon',75,1.85) print(p1.bmi)
classmethod
当一个方法内没有使用对象(self)时。我们可以在方法上面@classmethod,将他变成一个类方法,调用时,直接使用类名.方法()--变成类方法
class Classmethod_Demo(): role = 'dog' @classmethod def func(cls): print(cls.role) Classmethod_Demo.func()
staticmethod
当一个方法内既不用对象。又不用类名时。可以在方法上@staticmethod --变成静态方法
class Staticmethod_Demo(): role = 'dog' @staticmethod def func(): print("当普通方法用") Staticmethod_Demo.func()