Eric Snow added the comment:

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.

----------
nosy: +eric.snow

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue20897>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to