【发布时间】:2022-01-20 22:26:57
【问题描述】:
代码是不言自明的。我想同时调用A 类和B 类__init__ 方法。
代码:
class A(object):
def __init__(self, name):
self.name = name
class B(object):
def __init__(self, age):
self.age = age
class C(A, B):
def __init__(self, name, age):
A.__init__(self, name)
B.__init__(self, age)
def display(self):
print(self.name, self.age)
c = C("xyz", 12)
c.display()
输出:
xyz 12
我想使用super() 而不是明确声明
A.__init__(self, name)
B.__init__(self, age)
我找不到相同的资源,需要帮助。
以下不起作用:
class A(object):
def __init__(self, name):
super(A, self).__init__()
self.name = name
class B(object):
def __init__(self, age):
super(B, self).__init__()
self.age = age
class C(A, B):
def __init__(self, name, age):
# A.__init__(self, name)
# B.__init__(self, age)
super(C, self).__init__(name, age)
def display(self):
print(self.name, self.age)
c = C("xyz", 12)
c.display()
【问题讨论】:
-
不,我尝试了一些解决方案,但都没有效果
-
你确定吗?
super(A, self).__init__(name)有效吗? -
如果两个超类没有兼容的
__init__签名,你不能只用一个super调用。你正在做的事情已经做得很好了。 -
@NguyenThaiBinh 不,没有,你可以再次看到问题,我已经编辑了我的问题
标签: python oop inheritance super