This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author eric.snow
Recipients Claudiu.Popa, eric.snow, r.david.murray, terry.reedy, the.mulhern
Date 2014-03-18.14:14:01
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1395152041.76.0.750313147159.issue20897@psf.upfronthosting.co.za>
In-reply-to
Content
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.
History
Date User Action Args
2014-03-18 14:14:01eric.snowsetrecipients: + eric.snow, terry.reedy, r.david.murray, Claudiu.Popa, the.mulhern
2014-03-18 14:14:01eric.snowsetmessageid: <1395152041.76.0.750313147159.issue20897@psf.upfronthosting.co.za>
2014-03-18 14:14:01eric.snowlinkissue20897 messages
2014-03-18 14:14:01eric.snowcreate