n | class Dsc: | n | class SpecialClass: |
| def __get__(self, obj, cls): | | def __get__(self, obj, cls): |
| if hasattr(obj, "__len__"): | | if hasattr(obj, "__len__"): |
| return len(obj) | | return len(obj) |
n | elif hasattr(obj, "__abs__"): | n | if hasattr(obj, "__abs__"): |
| return abs(obj) | | return abs(obj) |
n | else: | n | |
| return 0 | | return 0 |
| | | |
| | | |
n | def sizer(cls): | n | def sizer(p_class): |
| cls.size = Dsc() | | p_class.size = SpecialClass() |
| return cls | | return p_class |
| | | |
t | # @sizer | t | |
| # class S(str): | | |
| # pass | | |
| | | |
| # @sizer | | |
| # class N(complex): | | |
| # pass | | |
| | | |
| # @sizer | | |
| # class E(Exception): | | |
| # pass | | |
| | | |
| # for obj in S("QWER"), N(3+4j), E("Exceptions know no lengths!"): | | |
| # print(obj, obj.size) | | |
| | | |