At 04:11 PM 7/14/2009 -0500, Benjamin Peterson wrote:
4. When __init__() is overridden, and the subclass __init__() calls object.__init__(), the latter should complain about excess arguments; ditto for __new__().

Actually, this rule is a PITA, because there's no good way to get rid of the warnings when you're trying to write MRO-agnostic mixins.

In other words, it negates many of the gains that were obtained by having new-style MROs, since you can no-longer write pass-through constructors that leave their arguments untouched. Instead, every class must know ahead of time whether it will be the "last" class before 'object' -- thereby making it impossible to slip other mixins into the chain below them.

In effect, 2.6 forces you to have a common known base class *other* than 'object' in order to write co-operative classes. :-(


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to