[Python-Dev] Re: Hot-To Guide for Descriptors (original) (raw)

François Pinard pinard at iro.umontreal.ca
Thu Jan 22 10:06:12 EST 2004


[Christian Tanzer]

François Pinard <pinard at iro.umontreal.ca> wrote:

> [...] found by scanning the base classes of the current class, and > `object' always when there is no base class for a "new-style" class.

As always, a little experiment at the interactive prompt is instructive: [...]

Indeed. One more tiny experiment is also enlightening:

Python 2.3.3 (#1, Jan 21 2004, 22:36:17)

metaclass = type class A: pass ... A.bases (<type 'object'>,) A.mro (<class '__main__.A'>, <type 'object'>)

(I merely added mro to your example) which seems to confirm that object' is always implied if the metaclass is type', exactly as if it was explicitly listed as a base.

Unless the above experiment just reveals some unspecified behaviour, which just happens to not correctly be in-lined with Guido's intents? That is possible, yet it seems unlikely. Only Guido really knows! :-)

Maybe we should not overly state that one ought to explicitly sub-class a class from `object' to get a new style class, nor suggest that not doing so might yield broken classes with unpredictable behaviour.

Of course, we have been educated to read "class A(object):" as the standard way to flag `A' as being new-style, but if I could avoid adding such "(object)" everywhere in the code, and merely declare metaclass once per module, it looks much neater to me. Taste varies :-). More it goes, more it looks like my fears were not really sounded.

Thanks to all those who participated in clarifying this little issue.

-- François Pinard http://www.iro.umontreal.ca/~pinard



More information about the Python-Dev mailing list