python-继承类执行的流程

在读python数据机构与算法, 发现了下面这个例子, 之前没有碰到过, 记录下来

In [17]: class A:
            def f(self):
                self.g()
            def g(self):
                print 'hello world'
   ....:             

In [18]: 

In [18]: class B(A):
             def g(self):
                 print 'b is run'
   ....:         

In [19]: 

In [19]: b = B()

In [20]: b.f()
b is run

In [21]: 

b.f()的执行过程是:

  • 由于b是B的实例对象, 所以首先在B类中查找f
  • 没有的话去父类A找, 找到后执行f函数
  • 接着在self.f函数中遇到self.g()
  • 由于self的值是一个类C的实例对象, 所以确定g的工作再从调用对象所属属性C类开始进行
  • 由于C类里面有函数g的定义, 所以应该调用C类里面的self.g(),输出b is run

这种通过动态约束确定调用关系的函数称为虚函数

posted @ 2016-10-15 18:17  qlshine  阅读(336)  评论(0编辑  收藏  举报