python class instantiation

Éric Daigneault daigno at gmail.com
Mon Oct 23 23:24:28 CEST 2006


Fredrik Lundh wrote:
> Éric Daigneault lists wrote:
>
>   
>> When creating a class with data members but no __init__ method.  Python 
>> deals differently with data members that are muatable and immutables.
>>     
>
> no, it doesn't.  it's your code that deals with them in different ways, 
> not Python.
>
>   
>> Ex:
>> class A(object):
>>     stringData = "Whatever"
>>     listData = []
>>
>> instance = A()
>>
>> Will have data members instantiated as expected (instance.stringData == 
>> "Whatever" and instance.listData == [])
>>
>> instance.listData.append("SomeString")
>>     
>
> here, you call a method on the class object.  this method modifies the 
> object.
>   
I see.. so the all the attributes I declared above are part of the 
class... not the instance, kinna like instance attributes being 
overshadowed with local method attributes...

>> instance.stringData = "Changed"
>>     
>
> here, you use assignment to *add* a new attribute to the instance.
>
> the class attribute is still there, but it's shadowed by an instance 
> attribute with the same name.
>
> </F>
>   
yep... got it...

guess the Java-C++ views on things kinna creapt on me there...

Thanks for clearing that up :-)

It is humbling to see how simple yet powerfull python`s view on things 
is....

Éric






More information about the Python-list mailing list