should I put old or new style classes in my book?
Arnaud Delobelle
arnodel at googlemail.com
Thu May 29 15:12:15 EDT 2008
Jason <tenax.raccoon at gmail.com> writes:
> On May 29, 10:07 am, allendow... at gmail.com wrote:
>> Hi All,
>>
>> I am working on a revised edition of How To Think Like a Computer
>> Scientist,
>> which is going to be called Think Python. It will be published by
>> Cambridge
>> University Press, but there will still be a free version under the GNU
>> FDL.
>>
>> You can see the latest version at thinkpython.com; I am revising now,
>> so
>> I welcome all comments, suggestions, corrections, etc.
>>
>> Anyway, I am posting to ask about the current status of new style
>> classes.
>> I am planning to present only one style in the book, because the
>> differences
>> between them don't matter for anything I am doing in the book.
>>
>> The current edition of the book presents old style classes. I am
>> considering
>> switching to new style classes on the assumption that this should be
>> the default
>> choice for new programs. The drawback is that a lot of the online
>> documentation
>> still uses old style classes.
>>
>> Thanks for any guidance you can provide.
>>
>> Cheers,
>> Allen
>
> I've got Python 3.0 alpha 2. In this version, it looks like you can
> define classes in either the old style or new style. (I snipped the
> top line a bit in the following example):
>
> Python 3.0a2 (r30a2:59405M, Dec 7 2007, 15:23:28
> Type "help", "copyright", "credits" or "license"
>>>> class one(object): pass
> ...
>>>> class two: pass
> ...
>>>> two
> <class '__main__.two'>
>>>> one
> <class '__main__.one'>
>>>> type(one)
> <type 'type'>
>>>> type(two)
> <type 'type'>
>>>>
Note that you can get the same behaviour in Python 2.2+ by setting the
global variable __metaclass__ to type:
marigold:~ arno$ python
Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> __metaclass__ = type
>>> class Foo: pass
...
>>> type(Foo)
<type 'type'>
>>>
--
Arnaud
More information about the Python-list
mailing list