Discuss / Python / homework

homework

Topic source

OfferBar

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

java基础的过来,懵逼的看了眼多继承,然后懵逼的走了

郑贤琳_644

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

mro显示的是方法调用的优先级?

CGcn_QQending

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

谢谢Mr_RightMen的学习笔记,刚看时候,感觉有些用词偏专业化,但是反复读了读,根据图和后续内容,即使不查阅个别名词的解释,应该已经正确的理解拓扑排序(Topological Sorting) 在python多重继承使用C3算法情况下的应用了。

viper1090

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

给你一个赞?

Junhong1994

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

刚开始就看到图论、有向无环图(DAG)、线性序列之类的词一脸懵逼。用百度大致了解下,还是很容易理解笔记里写了些什么,其实就算不知道这些词是什么意思,也能看懂笔记。

厉害了,讲的很清楚。如果再能稍微解释下mro就更完美了。

Mr_安生

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

最左原则 在多重继承中是没有体现的吧!如果“在每个父或子类中(除了D类)都有同一方法定义”,且我们要的方法C1和C2都有定义,那C1和C2谁是最左呢?基于此,在自然现象里,拓扑非简单线性的模型貌似不多吧,期待回答!或者指证我想法中的问题!

王加昭53882

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

没有说最左原则,试了下是指继承类中最左边的

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

简单的问题干嘛复杂化,多继承就一个深度优先广度优先的问题

机修贾森

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

blog说的很清晰 估计是笔误吧,第二张DAG的解释里的第三段: "接着看,入度为0的顶点有两个(A,C1),根据最左原则" 这里应该是(A,C2)吧,C1已经在第二次被剪掉了


Reply