指定哪个 parent class 用于多重继承
Specify which parent class to use for multiple inheritance
我有多个 parent class 具有被 child class 继承的同名方法。我想知道是否可以指定 parent class child class 在对 super() 的调用中使用哪个。根据传递的参数,我希望我的 child class 使用指定的 parent class 中的方法。提前致谢
class ParentOne:
def __init__(self, payload):
self.payload = payload
def foo(self):
message = f"From ParentOne: {self.payload}"
return message
class ParentTwo:
def __init__(self, payload):
self.payload = payload
def foo(self):
message = f"From ParentTwo: {self.payload}"
return message
class Child(ParentOne, ParentTwo):
def __init__(self, payload):
## How to specify which parent to init with??
super().__init__(payload=payload)
您的操作与您描述的非常相似:传入所需的父级并使用它。
由于您没有使用父级解析机制,因此您必须直接调用所需的 __init__
作为 class 方法,并将子级作为显式参数提供:
class Child(ParentOne, ParentTwo):
def __init__(self, payload, parent):
## How to specify which parent to init with??
parent.__init__(self, payload=payload)
child1 = Child("cargo 1", ParentOne)
child2 = Child("cargo 2", ParentTwo)
输出:
init 1 used
init 2 used
我有多个 parent class 具有被 child class 继承的同名方法。我想知道是否可以指定 parent class child class 在对 super() 的调用中使用哪个。根据传递的参数,我希望我的 child class 使用指定的 parent class 中的方法。提前致谢
class ParentOne:
def __init__(self, payload):
self.payload = payload
def foo(self):
message = f"From ParentOne: {self.payload}"
return message
class ParentTwo:
def __init__(self, payload):
self.payload = payload
def foo(self):
message = f"From ParentTwo: {self.payload}"
return message
class Child(ParentOne, ParentTwo):
def __init__(self, payload):
## How to specify which parent to init with??
super().__init__(payload=payload)
您的操作与您描述的非常相似:传入所需的父级并使用它。
由于您没有使用父级解析机制,因此您必须直接调用所需的 __init__
作为 class 方法,并将子级作为显式参数提供:
class Child(ParentOne, ParentTwo):
def __init__(self, payload, parent):
## How to specify which parent to init with??
parent.__init__(self, payload=payload)
child1 = Child("cargo 1", ParentOne)
child2 = Child("cargo 2", ParentTwo)
输出:
init 1 used
init 2 used