On Sat, 04 Dec 2010 15:00:43 +0100, Omar Abo-Namous wrote: >>> I think this behaviour is totally wrong, since it seems >>> A.__init__(self) is changing the value inside of A() not inside of the >>> object variable 'self' (that should be x or y)!! >> It's not wrong at all. You expect "mylist" to behave as an instance >> attribute, but you defined it as a class attribute. Instance >> attributes are naturally initialised in the __init__() method. >> > Could you please point me to a reference in the doc??
http://docs.python.org/reference/datamodel.html In the section about classes: "Class attribute assignments update the class’s dictionary ..." and in the section about class instances: "Attribute assignments and deletions update the instance’s dictionary, never a class’s dictionary." In this specific example, you also have to realise that mylist.append() mutates the list in place, and doesn't create a new list. It doesn't matter whether the list comes from a global variable, a local variable, an instance attribute or a class attribute, append is always an inplace operation. -- Steven -- http://mail.python.org/mailman/listinfo/python-list