考虑以下Python代码:解决菱形继承
class Parent(object):
def __init__(self, name, serial_number):
self.name = name
self.serial_number = serial_number
class ChildA(Parent):
def __init__(self, name, serial_number):
self.name = name
self.serial_number = serial_number
super(ChildA, self).__init__(name = self.name, serial_number = self.serial_number)
def speak(self):
print("I am from Child A")
class ChildB(Parent):
def __init__(self, name, serial_number):
self.name = name
self.serial_number = serial_number
super(ChildB, self).__init__(name = self.name, serial_number = self.serial_number)
def speak(self):
print("I am from Child B")
class GrandChild(ChildA, ChildB):
def __init__(self, a_name, b_name, a_serial_number, b_serial_number):
self.a_name = a_name
self.b_name = b_name
self.a_serial_number = a_serial_number
self.b_serial_number = b_serial_number
super(GrandChild, self).__init_(something)
当运行在如GrandChild的super
功能,什么是格式化__init__
参数,以便ChildA和ChildB都得到正确的参数的正确方法?
另外,如何从GrandChild类中访问speak
方法(ChildA的版本和ChildB的版本)的两个不同版本?
这似乎不是多重继承的有效用例。为什么不使用组合来代替? – MSeifert