why are people still using classic classes?
Bengt Richter
bokr at oz.net
Thu Jan 13 01:26:08 EST 2005
On 12 Jan 2005 20:06:39 -0800, Paul Rubin <http://phr.cx@NOSPAM.invalid> wrote:
>Simon Wittber <simonwittber at gmail.com> writes:
>> > Is there a reason NOT to use them? If a classic class works fine, what
>> > incentive is there to switch to new style classes?
>>
>> Perhaps classic classes will eventually disappear?
>
>It just means that the formerly "classic" syntax will define a
>new-style class. Try to write code that works either way.
>
>It would be nice if a __future__ directive were added right now (if
>it's not there already) that processes all class definitions as
>new-style. Otherwise there's no easy way to test for compatibility.
UIAM, it's not so bad:
>>> class C: pass
...
>>> type(C)
<type 'classobj'>
>>> class D(object): pass
...
>>> type(D)
<type 'type'>
>>> __metaclass__ = type
>>> class E: pass
...
>>> type(E)
<type 'type'>
So I guess you can put __metaclass__ = type where you would have done the __future__ thing.
If you want to do a special metaclass thing (even using a proper class ;-),
you can override the global __metaclass__
>>> def MC(*a): print a; return type(*a)
...
>>> class F:
... __metaclass__ = MC
... pass
...
('F', (), {'__module__': '__main__', '__metaclass__': <function MC at 0x02EE8D4C>})
Regards,
Bengt Richter
More information about the Python-list
mailing list