【发布时间】:2017-12-13 20:07:54
【问题描述】:
我正在阅读 stackoverflow 上的 this 线程,但根据用户的说法,该解决方案似乎是错误的,最重要的是,它无法解决我的问题,我不知道是不是因为答案是在 python 2 中还是什么。
但是,假设我有这个代码
class A:
def say_hello(self):
print("Hi")
class B:
def say_hello(self):
print("Hello")
class C(A, B):
def say_hello(self):
super().say_hello()
print("Hey")
welcome = C()
welcome.say_hello()
如何在不更改函数名称的情况下从 C 类调用 A 类和 B 类?
正如我在另一个线程中所读到的,您可以执行super(B, self).say_hello() 之类的操作,但这似乎不起作用,但我不知道为什么。
【问题讨论】:
-
“似乎不起作用”是什么意思?您是否收到任何类型的错误消息?输出错误?
-
要详细说明 Davy 的评论,您期望的输出是什么?你得到什么输出?您的问题“我如何从 C 类中调用 A 类和 B 类”尚不清楚 - 但我认为您只想要
A.say_hello(self)然后是B.say_hello(self)。super将使用 MRO 中的下一个类。如果您不想枚举实际值,那么您将不得不提供更多详细信息... -
您对
super的调用调用了A.say_hello,但该方法没有调用super,因此调用链结束。
标签: python python-3.x class inheritance