python - 调用父类的子方法并得到与无属性相关的错误
问题描述
以下是示例代码。我正在尝试在广泛的代码中实现类似的。
我已经对此进行了足够的研究,但找不到与我的问题相关的任何具体解释。
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()"
。
解决方案
在你的,你在分配之前B.__init__()
调用。因此,在您调用 时,对象上没有属性,因此失败。super().__init__()
self.d
A.__init__()
d
A.gete()
要解决此问题,您可以super().__init__()
在设置self.d
后调用B.__init__()
。
推荐阅读
- python - 如何在Python中有效地初始化一个特定长度的array.array
- c++ - 根据换行符从字符串中删除子字符串
- python - 如何遍历重复数据框?
- python - mac10.15.2上的pygame安装问题错误
- html - 当堆叠在其他(固定)元素后面时,元素上的链接变得不可点击
- python - win10无法导入tensorflow
- python - `iter(callable, sentinel)` 还是 Pythonic 吗?
- html - 选择文本输入(“其他”)时如何重置/禁用单选按钮?
- pandas - 取当前和前一天之间的最小值 - rolling().min()
- assembly - 了解英特尔 SUB 指令