0

私はPython2.7のドキュメントを読もうとしましたが、残念ながら理解する機会はありません.

なぜそれが起こるのですか?MRO と init 内のスーパー コールとはどのように接続されていますか?

最初の例:

class SuperFirst(object):
    def __init__(self):
        super(SuperFirst, self).__init__()
        print "We were in SuperFirst's __init__"

class SuperSecond(object):
    def __init__(self):
        super(SuperSecond, self).__init__()
        print "We were in SuperSecond's __init__"

class JustThird(SuperFirst, SuperSecond):
    def __init__(self):
        super(JustThird, self).__init__()
        print "We were in JustThird's __init__"

JustThird()

これは以下を出力します:

We were in SuperSecond's __init__
We were in SuperFirst's __init__
We were in JustThird's __init__

次に、最初の親の init 内のスーパー コールを削除します。

class SuperFirst(object):
    def __init__(self):
        print "We were in SuperFirst's __init__"

class SuperSecond(object):
    def __init__(self):
        super(SuperSecond, self).__init__()
        print "We were in SuperSecond's __init__"

class JustThird(SuperFirst, SuperSecond):
    def __init__(self):
        super(JustThird, self).__init__()
        print "We were in JustThird's __init__"

JustThird()

出力:

We were in SuperFirst's __init__
We were in JustThird's __init__

最初の親でのみ保持します。

class SuperFirst(object):
    def __init__(self):
        super(SuperFirst, self).__init__()
        print "We were in SuperFirst's __init__"

class SuperSecond(object):
    def __init__(self):
        print "We were in SuperSecond's __init__"

class JustThird(SuperFirst, SuperSecond):
    def __init__(self):
        super(JustThird, self).__init__()
        print "We were in JustThird's __init__"

JustThird()

出力:

We were in SuperSecond's __init__
We were in SuperFirst's __init__
We were in JustThird's __init__

両方の親から削除します。

class SuperFirst(object):
    def __init__(self):
        print "We were in SuperFirst's __init__"

class SuperSecond(object):
    def __init__(self):
        print "We were in SuperSecond's __init__"

class JustThird(SuperFirst, SuperSecond):
    def __init__(self):
        super(JustThird, self).__init__()
        print "We were in JustThird's __init__"

JustThird()

出力:

We were in SuperFirst's __init__
We were in JustThird's __init__
4

0 に答える 0