如何写活类的装饰器

def teyed(**kwargs):
  def demo(obj):
    print('======',kwargs)
    return obj
  print('---->',kwargs)
  return demo  #不能加括好

@teyed(x=1,y=2,w=3)   
class Foo():
  print('***')
  pass

@teyed(f=3,g=23)
class Bar():
  print('Bar***')
  pass



'''打印部分
D:\Python34\python.exe

----> {'w': 3, 'y': 2, 'x': 1}
***
====== {'w': 3, 'y': 2, 'x': 1}
----> {'f': 3, 'g': 23}
Bar***
====== {'f': 3, 'g': 23}


Process finished with exit code 0
'''

 

def teyed(**kwargs):
  def demo(obj):
    for key,val in kwargs.items():
      setattr(obj,key,val)
    return obj
  return demo  #不能加括好

@teyed(x=1,y=2,w=3)
class Foo():
  pass
print(Foo.__dict__)

@teyed(f=3,g=23)
class Bar():
  pass
print(Bar.__dict__)


'''打印部分
{'__doc__': None, '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Foo' objects>, 'x': 1, 'w': 3, 'y': 2}

{'f': 3, '__doc__': None, '__weakref__': <attribute '__weakref__' of 'Bar' objects>, '__module__': '__main__', 'g': 23, '__dict__': <attribute '__dict__' of 'Bar' objects>}

'''

  

 

猜你喜欢

转载自www.cnblogs.com/heluobing/p/10817525.html
今日推荐