多个类之间的层次结构/继承关系如何在python

时间:2019-07-07 23:32:36

标签: python python-3.x oop hierarchy multiple-inheritance

我在测试中遇到了这个问题,我试图在这里对这件事的工作方式有一些了解,我敢肯定没有一个像这样的代码,只是为了我的理解和测试,鉴于此代码和子任务,要求我在其中添加一些注释。

a。如果我们注释#1#3

,输出将是什么

b。 “”“”#2#3

c。 #1#4

d。 #1#4#5#9

e。 #1#3#5#8#9#10

f。 #1#3#5#6#7#9

我也从不评论任何内容开始,似乎pass语句根本不改变任何内容(在它和任务a之间)

class A(object):
    pass                          #1
    def __init__(self):           #2
        print(" 1 ", end="")      #2


class B(A):
    pass                          #3
    def __init__(self):           #4
        super().__init__()        #4
        print(" 2 ", end="")      #4


class C(A):
    def __init__(self):
        super().__init__()        #5
        print(" 3 ", end="")


class D(C, B):
    def __init__(self):
        super().__init__()        #6
        A().__init__()            #7
        print(" 4 ", end="")


class E(D, A):
    def __init__(self):           #8
        super().__init__()        #9
        print(" 5 ", end="")      #10


e = E()

好吧,我想知道some1是否可以提供任何技巧/图形视图,以帮助您理解有关多重继承的事情

**我尝试调试它,并查看它每次跳转的位置,但我不明白,为什么它在A()上的类D上运行。 init ()两次? 以及super() init 对从对象继承的类进行的操作

因为如果我通过添加新的类来更改一点

class F(object):
    def __init__(self):
        super().__init__()       # Comment and uncomment this
        print(" F ", end="")

并使C类继承它C(F)

然后无论我是否在F中注释超行,输出都会改变 就像我评论时一样,当它返回D类时,它不会进入B类。

0 个答案:

没有答案