面向对象程序语言的一个重要特点是继承。继承提供了在已存在类的 基础上创建新类的方法。继承的子类 拥有被继承的父类的所有方法,在此基础上,子类还可以添加自己的专有方法。
继承是类的强有力的特点。一些程序不用继承将会非常复杂,用了继 承,写起来就会简单扼要,通俗易懂。另外,通过继承,还可以重新利用 以前编写的代码,因为你可以对父类的方法进行定制,而并非一定要修改 它们。有时,继承反映了问题的自然结构,这样使程序更容易理解。
任何事情都有双重性。继承也有可能使程序变得难以阅读。调用一个 方法时,有时很难判断它是在哪定义的。相关的代码可能分散在几个模块 中。所以,有些事情利用继承的特点能够做好,不利用继承,也可能做的 不错。如果问题的自然结构不倾向于用继承解决,那么就不要用,用了反 而不好。
假设已经定义了一个父类BaseClass,那么子类的定义方式如下:
class DerivedClass(BaseClass): ......
子类别的实例化方式没有特别之处。如果要引用子类的某个属性,首 先在子类中寻找,没有就去到父类中寻找它的定义,在没有的话,就一直 向上找下去,知道找到为止。
方法的寻找方式与属性相同。子类的方法可以重定义父类的方法,要 是你觉得父类的方法不能满足要求的话。有时候,子类的方法中可以直接 调用父类中的方法,方式如下:
BaseClass.method(self, arguments)
class Person:
def __init__(self,
name = None,
age = 1,
sex = "men"):
self.name = name
self.age = age
self.sex = sex
def displayInfo(self):
print "name : %-20s" % self.name
print "age : %-20d" % self.age
print "sex : %-20s" % self.sex
这个Person类有三个属性,方法displayInfo用于打印这三个属性。