继承是面向对象中的一个概念,如果B类继承A类,那么我们称A类为B类的父类(超类),B类为A类的子类。继承使得子类拥有父类的属性和方法,这样就可以减少代码的重复。当子类对父类的方法不满意时,还可以重写该方法,即覆盖掉父类的方法,这样就可以实现同父类不一样的功能。当然,我们还可以在子类中添加新的属性和方法。Python3中我们所写的类都默认继承object类。Python中既支持单继承,也支持多继承。
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
def work(self):
print("%s is working" % self.name)
class Teacher(Person): # 定义一个Teacher类继承Person
def __init__(self,name,age,subject):
super().__init__(name,age) # 调用父类的 __init__方法
self.subject = subject
def teaching(self):
print("%s teach %s" % (self.name,self.subject))
def work(self):# 重写父类的方法
print("%s is teaching" % self.name)
t1 = Teacher("jack",28,"math")
t1.teaching()
在Python2中,经典类采用的是深度优先查找法, 新式类采用的是广度优先。而Python3中多继承采用的是C3算法。这个可以自己百度一下。如果我们想知道继承的顺序,可以通过__mro__方法来查看继承的顺序。