继承是面向对象编程中一个重要的特性。通过继承机制,实现了代码的重用。同时继承也表明了类和类之间的关系。
Python中类的继承简单示例(基于Python 2.7.11),代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
class Grandpa:
def __init__(self):
self.age = 70
print('I\'m grandpa!')
def myDream(self):
print('我有一个梦想:登上火星!')
class Father(Grandpa):
def __init__(self):
print('I\'m father')
def myDream(self):
print('我有一个梦想:登上月球!')
class Son(Father):
"""A demo class"""
def __init__(self):
self.age = 4
print('我是构造函数.Son')
def myDream(self):
print('我有一个梦想:环游世界!')
def setAge(self):
self.age = 10
def getAge(self):
realAge = self.age
return realAge
if __name__ == '__main__':
son = Son()
print '文档信息: ', Son.__doc__
print '类型名称:', Son.__name__
print '基类名称:', Son.__bases__
print '类型字典:', Son.__dict__
print '类型所在模块:', Son.__module__
print '实例类型:', Son().__class__
son.setAge()
print '实例成员:', son.getAge()
son.myDream()
输出结果:
我是构造函数.Son
文档信息: A demo class
类型名称: Son
基类名称: (<class __main__.Father at 0x2b4fa31364c8>,)
类型字典: {'__module__': '__main__', 'getAge': <function getAge at 0x2b4fa3142a28>, '__doc__': 'A demo class', '__init__': <function __init__ at 0x2b4fa3142938>, 'setAge': <function setAge at 0x2b4fa31429b0>}
类型所在模块: __main__
实例类型: 我是构造函数.Son
__main__.Son
实例成员: 10
我有一个梦想:环游世界!
可以看出,祖孙三代都有一个成员myDream,每人都有自己的梦想。如果son没有“梦想”,那么他就会继承父辈的“梦想”。
注释掉Son的myDream()成员,在main中调用son.myDream(),输出将会是,我有一个梦想:登上月球!
这种继承关系很形象,便于我们理解。