n | # Лагно Александра, группа 516 | n | class Dsc: |
| | | |
| class Descriptor: | | |
| def __get__(self, obj, cls): | | def __get__(self, obj, cls): |
n | if "__len__" in dir(obj): | n | if '__len__' in dir(cls): |
| return len(obj) | | return len(obj) |
n | elif "__abs__" in dir(obj): | n | elif '__abs__' in dir(cls): |
| return abs(obj) | | return abs(obj) |
| else: | | else: |
| return 0 | | return 0 |
| | | |
| | | |
| def sizer(cls): | | def sizer(cls): |
n | cls.size = Descriptor() | n | cls.size = Dsc() |
| return cls | | return cls |
| | | |
t | # @sizer | t | |
| # 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) | | |
| | | |