首页 > 解决方案 > 调用父类的子方法并得到与无属性相关的错误

问题描述

以下是示例代码。我正在尝试在广泛的代码中实现类似的。

我已经对此进行了足够的研究,但找不到与我的问题相关的任何具体解释。

class A:
    def __init__(self,a,b):
        self.a = a
        self.b = b
        self.e = self.gete()
    def typing(self):
        return self.d
    def gete(self):
        return self.d +1

class B(A):
    def __init__(self,a,b,c):
        super().__init__(a,b)
        self.c = c
        self.d = self.getd()

    def getd(self):
        return self.c+1

kk = B(1,2,3)
print(kk.typing())
print(kk.e)

我的预期结果是 5。但相反,它引发了一个错误。

"AttributeError: 'B' object has no attribute'"但实际上它有一条线 "self.d = self.getd()"

标签: pythonclassinheritancesuperclass

解决方案


在你的,你在分配之前B.__init__()调用。因此,在您调用 时,对象上没有属性,因此失败。super().__init__()self.d A.__init__()dA.gete()

要解决此问题,您可以super().__init__() 设置self.d后调用B.__init__()


推荐阅读