Python继承结构和参数

问题描述 投票:1回答:2

我正在尝试设计一个类结构,该结构允许用户定义自己的类,该类将重载其他类中的预定义方法。在这种情况下,用户将创建C类以重载D中的“函数”方法。用户创建的C类具有其他用户创建的类A和B的通用逻辑,因此它们从C继承以重载“函数”,但也从C继承D使用D的其他方法。我遇到的问题是如何将A和B的“值”传递给D,而忽略将其传递给C。由于C没有将“值”作为参数,因此我目前编写的内容会产生错误。

我知道我可以在C的init方法和超级调用中添加“值”(或* args),但我不想知道其他类向A和B添加新类所需的输入。另外,如果我交换C和DI的顺序也不会出错,但是我不会使用C的重载“函数”。有没有解决的办法?

class D(SomethingElse):
    def __init__(self, value, **kwargs):
        super(D, self).__init__(**kwargs)

        self.value = value

    def function(self):
        return self.value

    def other_method(self):
        pass

class C(object):
    def __init__(self):
        super(C, self).__init__()

    def function(self):
        return self.value*2

class B(C, D):
    def __init__(self, value, **kwargs):
        super(B, self).__init__(value, **kwargs)

class A(C, D):
    def __init__(self, value, **kwargs):
        super(A, self).__init__(value, **kwargs)



a = A(3)
print(a.function())
>>> 6

我正在尝试设计一个类结构,该结构允许用户定义自己的类,该类将重载其他类中的预定义方法。在这种情况下,用户将创建C类以重载...

python multiple-inheritance
2个回答
0
投票

从本质上讲,需要做两件事才能使您的__init__方法在Python中具有多个继承,从而发挥良好的作用:


0
投票

因此,我试图理解A和B的要点。我猜想也许您想混入超类行为,有时还具有局部行为。因此,假设A只是将各种行为混合在一起,而B则具有一些局部行为和状态。

© www.soinside.com 2019 - 2024. All rights reserved.