The section starting with: "If a class defines a slot also defined in a base class, the instance variable defined by the base class slot is inaccessible rendering the meaning of the program undefined. [...]" would need to be revisited as it claims that a check for this issue might be added in future. As far as I can tell, it has been added in Python 2.4 or earlier as I get a TypeError in that case. The attached diff is my attempt to fix this issue. Kind Regards, Sebastian
Additional Information: "multiple bases have instance lay-out conflict" This happens only if I add __slots__ to the bases so that there is no dict. I can reproduce this easily by indirectly deriving a class from two bases that both define the same slot. It only happens if all classes define __slots__ so there is no dict. class ac( object ): __slots__ = "a" class bc( ac ): __slots__ = "b" class cc( ac ): __slots__ = "c" class cannotbecreated( bc,cc ): pass # raises an error. Actually I don't know whether this is intended or if it is related to the documentation section I pointed at.
As far as I can tell, the text is still correct: >>> class a(object): __slots__ = 'a' >>> class b(a): __slots__ = 'a' works without raising TypeError. I've nevertheless enhanced the docs a bit in r75610.
History
Date
User
Action
Args
2022-04-11 14:56:53
admin
set
github: 51285
2009-10-22 15:27:42
georg.brandl
set
status: open -> closedresolution: fixedmessages: +