''' 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
谢谢哥们,懂了不少
我记得是按照继承的顺序来决定的,有同名的方法时,继承前面的类的方法
1# 比较好理解 2# 更多的是类的多态吧:当子类和父类都存在相同的f方法时,子类的f()覆盖了父类的f(),在代码运行的时候,总是会调用子类的f() / 多态的定义。
Sign in to make a reply
神月宗
-- 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