multiple inheritance and __slots__

Eric Texier erict at millfilm.co.uk
Mon Jul 15 10:29:26 EDT 2002


In short, I am getting the error message:
TypeError: multiple bases have instance lay-out conflict

when I try to declare a subclass of 2 classes with __slots__
Is there an easy way around. (In this case, I really would like
to keep the multiple inheritance.)

Following is an example:

#########################################
class aBasicTask(object):
    __slots__ = [    "_aBasicTask__Name",
                             "_aBasicTask__OuputType"]

    def __init__(self):
        super(aBasicTask,self).__init__()
            self.__Name = "unknown"
            self.__OuputType = "NoType"

    def setName(self,name):
        self.__Name = name

    def getName(self):
        return self.__Name

    name = property(getName,setName,doc = "task name")
###########################################
class OutputFile(object):
    ''' getFile from any file
    '''
    __slots__ = ["_OutputFile__fileName"]
    def TypeOutName():
        return "OutputFile"
    TypeOutName = staticmethod(TypeOutName)

    def __init__(self):
        super(OutputFile,self).__init__()
        self.__fileName = ""
    def getFile(self):
        return self.__fileName

class foo(aBasicTask,OutputFile): pass
...
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: multiple bases have instance lay-out conflict




More information about the Python-list mailing list