小甲鱼构造函数 重新 钻石继承那一集 我跟着写 为什么没出现 小甲鱼说的问题呀
代码如下class A:
def __init__(self):
print("我是A")
class B1(A):
def __init__(self):
print("我是B1")
class B2(A):
def __init__(self):
print("我是B2")
class C(B1, B2):
def __init__(self):
B1.__init__(self)
B2.__init__(self)
print("我是C")
c = C()
我是B1
我是B2
我是C
小甲鱼的结果是
我是A被调用了两次
而我这个 一次没都被调用 请问是什么问题呢?
你的代码中,每一个子类的构造函数都没有调用父类的构造函数,所以父类A的构造函数没有被调用。可以修改为将每个子类的构造函数改为以下形式:
class B1(A):
def __init__(self):
super().__init__()
print("我是B1")
class B2(A):
def __init__(self):
super().__init__()
print("我是B2")
在每个子类的构造函数中使用super()函数来调用父类的构造函数。这样就会按照指定的继承顺序依次调用父类的构造函数。
另外,为了更好地理解构造函数的调用顺序,你可以在父类A的构造函数中加入一条打印语句,如下所示:
class A:
def __init__(self):
print("我是A的构造函数")
这样就可以查看到构造函数的调用顺序了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-1-29 20:41
你的代码中,每一个子类的构造函数都没有调用父类的构造函数,所以父类A的构造函数没有被调用。可以修改为 ...
对 我仔细看 发现小甲鱼在视频里 就是你这么写得 我抄代码抄错了 mumei2018 发表于 2024-01-29 20:43
对 我仔细看 发现小甲鱼在视频里 就是你这么写得 我抄 ...
没关系,犯错是常有的事情。重要的是从错误中学习,并且及时纠正。在编程中,经常需要改动和调试代码,所以犯错误是正常的过程。记得多动手敲代码并且理解其中的原理,这样就能更好地掌握知识了。如果还有其他问题,随时都可以问我哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]