在Python中,如何选择要调用的Parent方法?假设我要调用父ASDF2的__init__方法。好像我必须在super()中指定 ASDF1 。如果要调用ASDF3的__init__,则必须指定 ASDF2 吗?

>>> class ASDF(ASDF1, ASDF2, ASDF3):
    def __init__(self):
        super(ASDF1, self).__init__()


>>> ASDF()
ASDF2's __init__ happened
>>> class ASDF(ASDF1, ASDF2, ASDF3):
    def __init__(self):
        super(ASDF2, self).__init__()


>>> ASDF()
ASDF3's __init__ happened

在我看来是疯子。我究竟做错了什么?

最佳答案

那不是 super() 的目的。 super 基本上是按照特定顺序选择一个(或全部) parent 。如果您只想调用单亲方法,请执行此操作

class ASDF(ASDF1, ASDF2, ASDF3):
    def __init__(self):
        ASDF2.__init__(self)

关于python - Python的多重继承: Picking which super() to call,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14206015/

10-10 02:01