类的装饰器应用
#使用描述符,定义描述符, class Tyeed: def __init__(self,key,expected_type):#2 self.key=key self.expected_type=expected_type def __get__(self, instance, owner): print('get方法') return instance.__dict__[self.key]#2 def __set__(self, instance, value): print('set方法') instance.__dict__[self.key]=value def __delete__(self, instance): print('delete方法') instance.__dict__.pop(self.key) def deco(**kwargs): def wrapper(obj): for key,val in kwargs.items(): setattr(obj,key,Tyeed(key,val)) return obj return wrapper @deco(name=str,get=int)#1.typed(x=1,y=2.z=4)---->deco 2.@deco--->Foo=deco(Foo) ### class People: def __init__(self,name,get,salary): self.name=name self.get=get self.salary=salary p1=People(111,15,346.9)#调用p1,执行set方法 print((People.__dict__))
没有得到想要的效果

浙公网安备 33010602011771号