Python面向对象三大特性之继承

#基类
class F:
  def f1(self):
    pass

#派生类
class S(F):
  def f2(self):
    pass

obj = s()
obj.f2()
obj.f1()

 

Python 支持多继承,多继承的类里面有相同的方法前面的优先

vim day7-4.py

#!/usr/bin/python
# -*- coding:utf-8 -*-

class D():
    def bar(self):
        print 'D.bar'

class C(D):
    def bar(self):
        print 'C.bar'


class B(D):
    pass

class A(B,C):
    pass

a = A()
a.bar()

  输出为D.bar

改成新式类

#!/usr/bin/python
# -*- coding:utf-8 -*-

class D(object):
    def bar(self):
        print 'D.bar'

class C(D):
    def bar(self):
        print 'C.bar'


class B(D):
    pass

class A(B,C):
    pass

a = A()
a.bar()

输出为C.bar

  

经典类是深度优先,新式类深度优先

 

多继承在写代码中用的比较少,但是还是有人会用,笔试中也可能会出现.

PS:只有C,B均继承D才能广度优先,假如C没有继承D则还是使用D里面的bar方法

  判断一个类是否新式类看它是否继承了object

 

posted @ 2017-05-24 18:32  minseo  阅读(158)  评论(0编辑  收藏  举报