所以我遇到了一个我一直在思考的想法。我对此表示怀疑,但它确实有效,所以我想知道是否有人在处理此类事情方面有任何经验:
def make_new_class(Koola,Booba):
class Bar(Koola,Booba):
def __init__(self):
Koola.__init__(self)
Booba.__init__(self)
return Bar
Koola和Booba是其他班级的地方。
所以这实际上可行。但是很少有人谈论这种可能性。
这是好习惯吗?如果没有,那还有什么替代方法?
如果您想知道这可能会出现在哪里;在您想要从多个子类继承的类的情况下,可能会出现这种情况。也许您有一堆算法以不同的方式完成相同的工作,并且想像乐高积木一样将它们组合在一起。
答案 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
这是最明显的警告。还有很多。
被警告