newbie: class and __dict__ variable.

Terry Reedy tjreedy at udel.edu
Sun Sep 19 20:38:49 EDT 2010


On 9/19/2010 1:37 PM, mafeusek at gmail.com 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