我是否应该将参数作为继承对象?

时间:2019-02-27 09:51:34

标签: python inheritance polymorphism

所以我遇到了一个我一直在思考的想法。我对此表示怀疑,但它确实有效,所以我想知道是否有人在处理此类事情方面有任何经验:

def make_new_class(Koola,Booba):

    class Bar(Koola,Booba):
        def __init__(self):
            Koola.__init__(self)
            Booba.__init__(self)

    return Bar

Koola和Booba是其他班级的地方。

所以这实际上可行。但是很少有人谈论这种可能性。

这是好习惯吗?如果没有,那还有什么替代方法?

如果您想知道这可能会出现在哪里;在您想要从多个子类继承的类的情况下,可能会出现这种情况。也许您有一堆算法以不同的方式完成相同的工作,并且想像乐高积木一样将它们组合在一起。

1 个答案:

答案 0 :(得分:0)

谢谢您的提问!

类是python中的一等公民,因此对它们的任何操作都与对其他任何对象的操作一样好。但是多重继承是一件很令人讨厌的事情,应该尽可能避免。

请注意:

class A1:
    def __init__(self):
        self.a = 1

class A2:
    def __init__(self):
        self.a = 2

Composed1 = compose(A1, A2)
c1 = Composed1()
print(c1.a)   # prints 2

Composed2 = compose(A2, A1)
c2 = Composed2()
print(c2.a)   # prints 1

这是最明显的警告。还有很多。

被警告