[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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4