> > In Python 2.2.2 you can set __class__, as long as __class__ has a > > compatible instance lay-out (at the C implementation level). > > This is the part where I am confused. How do I know if something > is an old or new style object? Do new-style objects derive from > built-in types (object/dict..) Yes. Please re-read http://www.python.org/2.2.2/descrintro.html > > Use new-style classes and you'll be much happier: you can invoke the > > superclass __setattr__ to do the magic. > > I've tried this, but then I was unable to create any of the > old-style classes. Is there any solution that would let me mutate > an object into both? I suspect not. Then the question is: No, you can never switch an object from classic to new-style. > - is there a runtime/compiling python flag to force all objects > into new-style layout? This will be the future, I think I've read > somewhere. Almost. You can add __metaclass__=type to the top of each module, and then classes without a base class will become new-style. Classes derived from other classes will still be whatever that other class is; and there's no way to force the whole standard library to use new-style classes (amongst many reasons, exceptions must be classic classes). > - how can I tell the difference between old and new programatically? type(C) == types.Classtype. Or check if the class has a __class__ attribute (classic classes don't). --Guido van Rossum (home page: http://www.python.org/~guido/)
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