Python学习
7.7 继承
继承性最基本的作用就是避免我们定义重复的方法和重复的变量。
Python允许多继承,也就是一个子类可以继承多个父类。
1.继承的格式:
首先,建议一个类写在一个模块中。
如,在c4.py文件中定义了Human这个父类:
class Human():
pass
在c5.py文件中定义一个子类Student,它继承父类Human的格式如下:
from c4 import Human
class Student(Human):
其中括号“()”里用来添加父类的名字。
2.继承的内容:
以下一个实例:
父类的代码如下:
class Human():
sum = 0
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
print(self.name)
子类的代码如下:
from c4 import Human
class Student(Human):
def do_homework(self):
print('English homework')
student1 = Student('石敢当', 18)
print(student1.sum)
print(Student.sum)
print(student1.name)
print(student1.age)
student1.get_name()
输出结果:
以上可以说明,子类继承父类的类变量、实例变量、实例方法。
3.子类可以有自己的构造函数:
子类不可能和父类完全一样,如果一样那就没有意义了,所以子类有它自己的一些变量和方法。比如我们定义一个子类的构造函数,里面新加入一个子类特有的变量school,如下:
from c4 import Human
class Student(Human):
def __init__(self, school, name, age):
self.school = school
super(Student, self).__init__(name, age)
def do_homework(self):
print('English homework')
student1 = Student('人民路小学','石敢当', 18)
print(student1.name)
print(student1.age)
打印结果:
以上可知,在子类里面调用父类的构造函数,用关键字“super”,第一个参数为子类的名字,第二个参数为self,后面用点号调用父类的构造函数。
4.super关键字也可以用来子类方法调用父类方法:
父类代码:
class Human():
sum = 0
def __init__(self, name, age):
self.name = name
self.age = age
def do_homework(self):
print('This is a parent method.')
子类代码:
from c4 import Human
class Student(Human):
def __init__(self, school, name, age):
self.school = school
super(Student, self).__init__(name, age)
def do_homework(self):
print('English homework')
student1 = Student('人民路小学','石敢当', 18)
student1.do_homework()
运行结果:
以上可知,当子类与父类中有重名的方法时,会优先调用子类的方法。那么如何调用父类的方法呢?Python规定用super关键字来实现。如下:
输出结果: