Trying to understand Python objects

Aahz aahz at pythoncraft.com
Fri Nov 24 14:04:53 EST 2006


In article <4565f8f7$0$8460$426a74cc at news.free.fr>,
Bruno Desthuilliers  <bdesth.quelquechose at free.quelquepart.fr> wrote:
>Aahz a écrit :
>> In article <mailman.564.1164158130.32031.python-list at python.org>,
>> Ben Finney  <bignose+hates-spam at benfinney.id.au> wrote:
>>> 
>>>Typically, classes are created as a subclass of another class. The
>>>top-level basic type in Python is 'object', so if your class doesn't
>>>make sense deriving from anything else, derive from 'object'.
>>>
>>>   class Point(object):
>>>       pass
>>>
>>>Defining a class with *no* superclass is not recommended. If you don't
>>>yet understand the difference between the above style (called a
>>>"new-style" class) and the style you presented, you should always
>>>derive from a superclass ('object' or something more specific) until
>>>you encounter a situation where that causes a problem.
>> 
>> Side note: I disagree with the above advice, but it's Thanksgiving and I
>> don't have enough room on the margin for the proof.  I think classic
>> classes are just fine.
>
>Don't see it as a religious point please, but I fail to understand why 
>you seem so in love with old-style classes ? new-style classes are the 
>"official" Python object model since 2.2 (which is a few years ago now), 
>and the last mandatory use of them (exceptions...) disappeared with the 
>2.5. AFAIK, everything you do with old-style classes can be done with 
>new-style ones. FWIW, old-style classes support is now only for backward 
>compat. So *why* insisting on using them ?

There's a big difference between saying "always use old-style classes"
and "classic classes are just fine".  So I'm certainly not "in love with"
or "insisting" on using classic classes.  Mostly what I'm saying is that
I think it's kinda gross and grotesque for newcomers to be told to use

    class Point(object):
        pass

instead of

    class Point:
        pass

You are also wrong about new-style classes being the "official" object
model -- the tutorial doesn't even mention them yet!  I also think that
new-style classes should be avoided in Python 2.2 because of the subtle
differences that were introduced in 2.3 -- and 2.2 is still in active
use.
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

"In many ways, it's a dull language, borrowing solid old concepts from
many other languages & styles:  boring syntax, unsurprising semantics,
few automatic coercions, etc etc.  But that's one of the things I like
about it."  --Tim Peters on Python, 16 Sep 1993



More information about the Python-list mailing list