A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2003-February/033640.html below:

Writing a mutable object problem with __setattr__

[Python-Dev] Re: Writing a mutable object problem with __setattr__ [Python-Dev] Re: Writing a mutable object problem with __setattr__Guido van Rossum guido@python.org
Tue, 25 Feb 2003 12:31:08 -0500
> > 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