zoukankan      html  css  js  c++  java
  • python的MRO方案

    Python 中的 class 分为 classical 和 new-style 两大类。其中 classical 是 python 一直沿用的,而 new-style 是 2.2 才开始引入的东西。只要 class 继承于 object,或 bases class 里面任意一个继承于 object,这个 class 都是 new-style。

    对于复杂的继承结构,class 中 method 的调用顺序(MRO)也是不同的。classical 用的是深入优先,而 new-style 则是广度优先。所以:

    class D(object):
        def foo(self):
            print "class D"
            
    class B(D):
        pass
        
    class C(D):    
        def foo(self):
            print "class C"
            
    class A(B, C):
        pass
        
    f = A()
    f.foo()
    class C


     

    而旧版的:

    class D:
        def foo(self):
            print "class D"
            
    class B(D):
        pass
        
    class C(D):    
        def foo(self):
            print "class C"
            
    class A(B, C):
        pass
        
    f = A()
    f.foo()
    classD


     

    ok!

  • 相关阅读:
    Celery(异步任务,定时任务,周期任务)
    SQLAlchemy的应用创建
    SQLAlchemy多对多
    SQLAlchemy
    app开发-2
    app开发-3
    app开发-1
    MongoDB-pymongo
    MongoDB-增删改查
    MongoDB-数据类型
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144830.html
Copyright © 2011-2022 走看看