Multiple Inheritance __slots__ problem

Craig Ringer craig at postnewspapers.com.au
Sat Dec 25 08:13:00 EST 2004


On Fri, 2004-12-24 at 20:07, Nitin Shukla wrote:
> Hello,
> 
> Can anyone tell why am I getting this error and how to work around this
> problem.
> 
> >>> class Klass(object):
> ... 	__slots__ = ( 'x' )
> ...
> >>> class Klass1(object):
> ... 	__slots__ = ( 'y' )
> ...
> >>> class Klass(Klass, Klass1):
> ... 	__slots__ = ( 'z' )
> ...
> Traceback (most recent call last):
>   File "<interactive input>", line 1, in ?
> TypeError: multiple bases have instance lay-out conflict
> 
> I need to define slots in these classes and also need to inherit them in
> Derived class.

If I recall correctly, the standard advice in this situation is "don't
use __slots__. If you think you need __slots__, still don't use
__slots__."

I've made use of __slots__ once myself for an optimisation when
subclassing `str', but if you're not using it for a serious optimisation
need it's probably best to steer clear.

--
Craig Ringer




More information about the Python-list mailing list