__dict__ attribute for built-in types

Terry Reedy tjreedy at udel.edu
Thu Oct 27 22:44:26 EDT 2011


On 10/27/2011 6:52 PM, candide wrote:

> No but I'm expecting from Python documentation to mention the laws of
> Python ...

The details of CPython builtin classes are not laws of Python. It *is* a 
'law of Python' that classes can use 'slots = ' to restrict the 
attributes of instances. By implication, builtin classes in any 
implementation do not have to allow attribute assignment. I do not 
believe it would be a violation if some implementation did so.

None of this is to say that we could not say something on the subject at 
the beginning of the 'built-in types' chapter of the lib manual.

> OK but I'm talking about classes, not instances :

Yes you are. The class determines whether its instances have assignable 
new attributes.

 > 42 has no __dict__ > attribute but,
 > may be, 43 _has_ such attribute, who knows in advance ? ;)

True, in a sense, but if the class allowed a user to execute
"42.__dict__ = {}" then you could safely assume that "43.xxx = z" should 
work also.

-- 
Terry Jan Reedy




More information about the Python-list mailing list