Message213965
Both abstractnethod and abstractproperty work by setting __isabstractmethod__ to True on the decorated function. Then type.__new__ looks for any attributes of the current class (including inherited ones) that have __isabstractmethod__ set to True. The signature of abstract methods is not checked/enforced. In fact the overriding attribute doesn't even have to be a method at all. PEP 3119 doesn't say much about this. I expect it is the way the way it is for performance reasons.
As to SuperSubber working in Python 3, don't forget that metaclasses are declared in the class signature:
class SuperSubber(META):
pass
Doing things like enforcing signatures is doable, but would require some other mechanism. If you want to pursue this further I recommend you take it to the python-ideas mailing list. |
|
Date |
User |
Action |
Args |
2014-03-18 14:14:01 | eric.snow | set | recipients:
+ eric.snow, terry.reedy, r.david.murray, Claudiu.Popa, the.mulhern |
2014-03-18 14:14:01 | eric.snow | set | messageid: <1395152041.76.0.750313147159.issue20897@psf.upfronthosting.co.za> |
2014-03-18 14:14:01 | eric.snow | link | issue20897 messages |
2014-03-18 14:14:01 | eric.snow | create | |
|