newbie: class and __dict__ variable.

Terry Reedy tjreedy at
Mon Sep 20 02:38:49 CEST 2010

On 9/19/2010 1:37 PM, mafeusek at wrote:
> Hallo Group Members. From time to time I see in python code following
> notation that (as I believe) extends namespace of MyClass.

No, it does not affect MyClass, just the instance dict.

> class MyClass:
>      def __init__(self):
>          self.__dict__["maci"]=45

Have you seen exactly this usage?

> myCl2 = MyClass2()
> print myCl2.maci
> I am guessing that there must be some difference between the one above
> and the one below, because otherwise no one would probably use the one
> above. Do YOu know that difference?
> class MyClass2:
>      def __init__(self):
>          self.maci=45

If the class has a .__setattr__ method, the first bypasses that method, 
the second results in it being called. The direct __dict__ access is 
most useful within a .__setattr__ method to avoid infinite recursion.

> myCl = MyClass()
> print myCl.maci

Terry Jan Reedy

More information about the Python-list mailing list