Discuss / Python / 找的题目,然后我去实现了下.得出的结论,希望能帮到大家

找的题目,然后我去实现了下.得出的结论,希望能帮到大家

Topic source

神月宗

#1 Created at ... [Delete] [Delete and Lock User]

-- coding:utf-8 --

''' 1.有两个基类A和B,A和B都定义了方法f(),C继承A和B,那么调用C的f()方法时会出现不确定。 2.有一个基类A,定义了方法f(),B类和C类继承了A类(的f()方法),D类继承了B和C类,那么出现一个问题,D不知道应该继承B的f()方法还是C的f()方法

''' """

#1. class A(object): def f(self): print "A"

class B(object): def f(self): print "B"

class C(B,A): pass c = C() c.f()#会输出什么?

#"A" or "B"

#结论:输出什么的决定性因素是C在继承父类时的顺序!

#即靠近左边的先输出! """

#2. class A(object): def f(self): print "A"

class B(A): def f(self): print "AB" class C(A): def f(self): print "CB"

class D(B,C): pass

d = D() d.f()

#输出AB

野哥love

#2 Created at ... [Delete] [Delete and Lock User]

谢谢哥们,懂了不少

我记得是按照继承的顺序来决定的,有同名的方法时,继承前面的类的方法

1# 比较好理解 2# 更多的是类的多态吧:当子类和父类都存在相同的f方法时,子类的f()覆盖了父类的f(),在代码运行的时候,总是会调用子类的f() / 多态的定义。


  • 1

Reply