Pythonic Approach to Multiple Parent Method Calls
假设我有以下类结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Mixin1(Base1): def get_data(self): # Gather some data in some way class Mixin2(Base2): def get_data(self): # Gather some data in another way class MyClass(Mixin1, Mixin2): def get_data(self): # Gather some data in yet another way. Then... # Get Mixin2's version of get_data. Then... # Get Mixin1's version of get_data. |
提供一些上下文的一个例子是,
调用父母的
获取此类信息的一种方法可能如下:
1 2 3 4 | original_class = self.__class__.__base__ parents = [base for base in original_class.__bases__] for parent in parents: parent.get_data() |
号
我不认为这是一个不合理的方法,但如果我必须开始爬到元我开始怀疑是否有一个更Python的方法。
有什么建议吗?是否可以使用
1 2 3 4 5 | class MyClass(Mixin1, Mixin2): def get_data(self): # do local stuff data2 = Mixin2.get_data(self) data1 = Mixin1.get_data(self) |
而且,这篇文章似乎是相关的。
另一种方法是使用包容而不是继承。