有没有一种方法可以让子函数继承多个父函数来访问所有父函数的方法?

时间:2020-08-06 06:10:16

标签: python-3.x class oop inheritance

制作第三个继承前两个类属性的类时出现错误。第一个类的功能将通过,但是当访问第二个类的功能时,我得到一个错误:

class3' object has no attribute 'othernum

代码如下:

class class1():
    def __init__(self):
        self.number = 10000
    def getNum(self):
        return self.number
    
class class2():
    def __init__(self):
        self.othernum = 1111
    def displaynum(self):
        return self.othernum

class class3(class1, class2):
    pass

newperson = class3()
print(newperson.getNum())
print(newperson.displaynum())

2 个答案:

答案 0 :(得分:1)

找到答案。

class class3(class1, class2):
    def __init__(self):
        class1.__init__(self)
        class2.__init__(self)

答案 1 :(得分:1)

@Ishaan Sathaye提出的答案确实是正确的。但是请注意,有多种机制可用于在多继承层次结构中初始化基类。请参见Calling parent class init with multiple inheritance, what's the right way?,尤其是标题为所有基类的对象都是为协作继承而设计的。

因此,如果您的3个类是为合作继承而设计的,那么我们将:

class class1():
    def __init__(self):
        super().__init__()
        self.number = 10000
    def getNum(self):
        return self.number

class class2():
    def __init__(self):
        super().__init__()
        self.othernum = 1111
    def displaynum(self):
        return self.othernum

class class3(class1, class2):
    def __init__(self):
        super().__init__()

newperson = class3()
print(newperson.getNum())
print(newperson.displaynum())