如何装饰一个类?
为一个类通过装饰,增加一些类属性。
之所以能够装饰,本质上是为类对象动态的添加了一个属性,而这个标识符My指向这个类对象。
def sethu(name): def wrapper(self): self.NAMES=name #print(self) return self #print(wrapper) return wrapper @sethu(‘xiao hua‘) class My: pass print(My.__dict__)
普通方法本身都是类的属性,第一个参数必须是self,而self必须指向一个对象,也就是类必须实例化之后,由实例来调用这个方法。
类方法@classmethod
class Xi: aha="类属性" def foo(self): print("foo") def bar(): print("bar") @classmethod def xy(cls):#类方法 print(cls.aha) @staticmethod def jing():#静态方法 print("jing") a=Xi() print(a.foo()) Xi.bar() #a.bar()#报错TypeError: bar() takes 0 positional arguments but 1 was given print(Xi.__dict__) Xi.xy() a.xy()#a.__class__.xy() Xi.jing() a.jing()
原文:https://www.cnblogs.com/canglongdao/p/13348245.html