Python进阶(5):类与继承
Python支持多继承
在面向对象编程中,被继承的类称为父类或基类,新的类称为子类或派生类。
通过继承不仅可以实现代码的重用,还可以通过继承来理顺类与类之间的关系。在 Python 中,可以在类定义语句中,类名右侧使用一对小括号将要继承的基类名称括起来,从而实现类的继承。
具体的语法格式如下:
class ClassName(baseclasslist):
""类的帮助信息" # 类文档字符串
Statement # 类体
ClassName:用于指定类名。
baseclasslist:用于指定要继承的基类,可以有多个,类名之间用逗号“,”分隔。如果不指定将使用所有 Python 对象的根类 object。
""类的帮助信息":用于指定类的文档字符串,定义该字符串后,在创建类的对象时,输入类名和左侧的括号“(”后,将显示该信息。
statement:类体,主要由类变量(或类成员)、方法和属性等定义语句组成。如果在定义类时,没想好类的具体功能,也可以在类体中直接使用 pass 语句代替。
方法重写
基类的成员都会被派生类继承,当基类中的某个方法不完全适用于派生类时,就需要在派生类中重写父类的这个方法,这和Java 语言中的方法重写是一样的。
派生类中调用基类的 __init__()方法
当在派生类中定义__init__() 方法时,不会自动调用基类的 __init__()方法。如果要让派生类调用基类的__init__() 方法进行必要的初始化,需要在派生类使用 super()函数调用基类的 __init__() 方法。派生类使用基类的构造函数__init__(self)时,必须加上super().前缀
演示程序:InheritSnake.py
class Biology:def __init__(self, name):self.name = namedef show(self):print("【",self.name,"】是一种生物")
class Animal:def __init__(self, name):self.name = namedef run(self):print('Animal【',self.name,'】 is running.')
class Dog(Animal,Biology): # Dog继承于Animal,也继承于Biology生物,Python支持多继承def run(self):print('Dog【',self.name,'】 is running.')
class Cat(Animal): # Cat继承于Animaldef __init__(self, name):super().__init__(name)print('派生类使用基类的构造函数__init__(self)时,必须加上super().前缀')def run(self):print('Cat【',self.name,'】 is running.')
animal=Animal("哺乳动物")
animal.run()
animal=Cat("阿猫")
animal.run()
animal=Dog("阿狗")
animal.run()
animal.show()