homework
Topic source谢谢Mr_RightMen的学习笔记,刚看时候,感觉有些用词偏专业化,但是反复读了读,根据图和后续内容,即使不查阅个别名词的解释,应该已经正确的理解拓扑排序(Topological Sorting) 在python多重继承使用C3算法情况下的应用了。
最左原则 在多重继承中是没有体现的吧!如果“在每个父或子类中(除了D类)都有同一方法定义”,且我们要的方法C1和C2都有定义,那C1和C2谁是最左呢?基于此,在自然现象里,拓扑非简单线性的模型貌似不多吧,期待回答!或者指证我想法中的问题!
没有说最左原则,试了下是指继承类中最左边的
class A(object):
def foo(self):
print('A foo')
def bar(self):
print('A bar')
class B(object):
def foo(self):
print('B foo')
def bar(self):
print('B bar')
class C1(A):
def bar(self):
print('C1-bar')
class C2(B):
def bar(self):
print('C2-bar')
class D(**C1,C2**):
pass
if __name__ == '__main__':
print(D.__mro__)
d=D()
d.foo()
d.bar()
输出:
(<class '__main__.D'>, <class '__main__.C1'>, <class '__main__.A'>, <class '__main__.C2'>, <class '__main__.B'>, <class 'object'>)
A foo
C1-bar
# -*- coding:utf-8 -*-
#__author__ :suneee
#__content__:说明
class A(object):
def foo(self):
print('A foo')
def bar(self):
print('A bar')
class B(object):
def foo(self):
print('B foo')
def bar(self):
print('B bar')
class C1(A):
def bar(self):
print('C1-bar')
class C2(B):
def bar(self):
print('C2-bar')
class D(C2,C1):
pass
if __name__ == '__main__':
print(D.__mro__)
d=D()
d.foo()
d.bar()
输出:
(<class '__main__.D'>, <class '__main__.C2'>, <class '__main__.B'>, <class '__main__.C1'>, <class '__main__.A'>, <class 'object'>)
B foo
C2-bar
OfferBar
java基础的过来,懵逼的看了眼多继承,然后懵逼的走了