类的装饰器

# def deco(obj):
#     print('======')
#     return obj
# @deco
# def test():
#     print('运行')
# test()


def deco(obj):
    print('======')
    obj.z=1
    obj.x=5
    obj.c=3
    return obj
@deco#FOO=deco(Foo)
class Foo:
    pass
p1=Foo()
print(p1.__dict__)

%%%%

def Typed(**kwargs):
    def deco(obj):
        for key,val in kwargs.items():
            setattr(obj,key,val)
        return obj
    return deco


@Typed(X=1,Y=2,Z=4)#1.typed(x=1,y=2.z=4)---->deco 2.@deco--->Foo=deco(Foo) ###
class Foo:
    pass
print(Foo.__dict__)


@Typed(name='kdsh')
class Bar:
    pass
print(Bar.name)
posted @ 2020-01-14 15:27  汉魂县令  阅读(77)  评论(0)    收藏  举报