refering to base classes

Chaz Ginger cginboston at hotmail.com
Wed Aug 30 08:12:38 EDT 2006


Georg Brandl wrote:
> Chaz Ginger wrote:
>> glenn wrote:
>>>> Shouldn't that be
>>>>
>>>> beagle = animal.dog()
>>>>
>>>> to create an instance?
>>>>
>>>> We've all done it ...
>>> lol - actually Im confused about this - there seem to be cases where
>>> instantiaing with:
>>> instance=module.classname()
>>> gives me an error, but
>>> instance=module.classname
>>> doesnt - so I got into that habit, except for where I had a constructor
>>> with parameters - except now Im feeling foolish because I cant
>>> replicate the error - which suggests I didnt understand the error
>>> message properly in the first place... arrgh
>>> I guess thats just part of the process of gaining a new language.
>>>
>>> glenn
>>>
>>
>> module.classname and module.classname() are two different things. If 
>> you use module.classname() you invoke the __new__ and __init__ methods 
>> in the class, and you might get an error from them.
>>
>> On the other hand module.classname will always work, assuming 
>> classname really exists in module. What you get back is a sort of 
>> reference to the class itself and not an instance of it.
> 
> It is not a sort of reference to the class, it is *the class itself*.
> 
>  >>> class A:
> ...     pass
> ...
>  >>> A
> <class __main__.A at 0xdeadbeef>
>  >>>
> 
> Georg
A reference by any other name still smells as sweet! lol.



More information about the Python-list mailing list