n | class Dsc: | n | # Лагно Александра, группа 516 |
| | | |
| | | class Descriptor: |
| def __get__(self, obj, cls): | | def __get__(self, obj, cls): |
n | if '__len__' in dir(cls): | n | if "__len__" in dir(obj): |
| return len(obj) | | return len(obj) |
n | elif '__abs__' in dir(cls): | n | elif "__abs__" in dir(obj): |
| return abs(obj) | | return abs(obj) |
| else: | | else: |
| return 0 | | return 0 |
| | | |
| | | |
| def sizer(cls): | | def sizer(cls): |
n | cls.size = Dsc() | n | cls.size = Descriptor() |
| return cls | | return cls |
| | | |
t | | t | # @sizer |
| | | # class S(str): |
| | | # def __init__(self, stroka): |
| | | ## self.field = 100500 |
| | | ## |
| | | # @sizer |
| | | # class N(complex): |
| | | # pass |
| | | ## |
| | | # @sizer |
| | | # class E(Exception): |
| | | # pass |
| | | ## |
| | | ##s = S("QWER") |
| | | ##print(s.__dict__, S.__dict__) |
| | | # for obj in S("QWER"), N(3+4j), E("Exceptions know no lengths!"): |
| | | ## print(obj, obj.size) |
| | | |