40 lines
680 B
Python
40 lines
680 B
Python
#!/usr/bin/env python3
|
|
|
|
def attr(cls):
|
|
cls._attr1 = 'test'
|
|
return cls
|
|
|
|
|
|
def attr2(*, name=None):
|
|
def attr2_cls(cls):
|
|
cls._attr_name_1 = name
|
|
return cls
|
|
|
|
return attr2_cls
|
|
|
|
|
|
class Attr:
|
|
controllers = []
|
|
|
|
def __init__(self, *, name=None):
|
|
self.__name = name
|
|
|
|
def __call__(self, cls):
|
|
Attr.controllers.append(cls)
|
|
cls._attr_name_2 = self.__name
|
|
return cls
|
|
|
|
|
|
@Attr(name='test2')
|
|
@attr2(name='test1')
|
|
@attr
|
|
class Class1:
|
|
pass
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(getattr(Class1, '_attr1'))
|
|
print(getattr(Class1, '_attr_name_1'))
|
|
print(getattr(Class1, '_attr_name_2'))
|
|
print(Attr.controllers)
|