多个父方法调用的Pythonic方法

时间:2015-05-22 19:36:04

标签: python multiple-inheritance

假设我有以下类结构:

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.

提供一些上下文的示例案例是Mixin1是身份验证处理程序,Mixin2是登录处理程序。父类中的功能将填充实例变量(例如,错误消息)。

调用父级get_data方法的最Pythonic方法是什么?

获取此类信息的一种方法可能是这样的:

original_class = self.__class__.__base__
parents = [base for base in original_class.__bases__]
for parent in parents:
    parent.get_data()

我不认为这是一种不合理的方法,但如果我必须开始爬进元数据,我开始怀疑是否有更多的Pythonic方法。

有什么建议吗?可以使用super()吗?

1 个答案:

答案 0 :(得分:4)

|

此外,SDG Repository似乎是相关的。

另一种方法是使用包含而不是继承。