我有一个类叫做电子人,它继承了另外两个类:人类和机器人。
假设两个父母有自己的方法Talk(),我能从半机械人孩子那里调用这两种方法吗?例如:
class Cyborg(Human, Robot):
def Talk(self):
human_properties = Human.Talk()
robot_properties = Robot.Talk()
return human_properties + robot_properties
super()方法不能解决这个问题。你知道吗
Tags:
与其将
Talk
视为方法,不如将其实现为classmethod
,这样就不需要首先继承:如果正确实现继承图,可以使用
super
实现。为了让它工作,Human
和Robot
都需要一个可以Talk
的公共基类。你知道吗这是一个谈话的例子。你知道吗
使用
super()
您将在MRO链上拾取第一个同名的方法,但不能同时拾取这两个方法(除非拾取的方法自己调用super()
)。如果您想选择它们,您必须手动调用它们并显式传递self
引用:不管怎样,我还是建议不要使用多重继承——虽然它既漂亮又有用,而且在非常罕见的情况下是不可替代的,但它有很多缺陷,处理它是不值得的。。。你知道吗
相关问题 更多 >
编程相关推荐