Jason <[EMAIL PROTECTED]> writes: > On May 29, 10:07 am, [EMAIL PROTECTED] 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 -- http://mail.python.org/mailman/listinfo/python-list