类继承
定义:即一个派生类(derived class)继承基类(base class)的字段和方法;
可以用issubclass来判断一个类是不是另一个类的子类
# 类的继承
In [20]: class Parent(object):
...: parentAttr = 100
...: def __init__(self):
...: print '调用父类构造函数'
...: def parentMethod(self):
...: print '调用父类方法'
...: def setAttr(self, attr):
...: Parent.parentAttr = attr
...: def getAttr(self):
...: print "父类属性:",Parent.parentAttr
...: class Child(Parent):
...: def __init__(self):
...: print "调用子类构造方法"
...: def childMethod(self):
...: print '调用子类方法'
...:
In [21]: c = Child() # 实例化子类
调用子类构造方法
In [23]: c.childMethod() # 调用子类方法
调用子类方法
In [25]: c.parentMethod()
调用父类方法
In [27]: c.setAttr(200) # 设置属性
In [28]: c.getAttr()
父类属性: 200
In [33]: issubclass(Child,Parent) # 判断是否是父子关系
Out[33]: True
# 多重继承
In [38]: class P1(object):
...: def foo(self):
...: print 'called P1-foo()'
...: class P2(object):
...: def foo(self):
...: print 'called P2-foo()'
...: def bar(self):
...: print 'called P2-bar()'
...: class C1(P1,P2):
...: def bar(self):
...: print 'called C1-bar()'
...:
In [39]: c = C1() # 实例化子类
In [40]: c.foo() # 调用父类P1中的方法,如果父类潘P1中没有去父类P2中寻找
called P1-foo()
In [41]: c.bar() # 调用属性时优先调用自己的属性,如果自己没有再去父类中寻找
called C1-bar()