继承的概念
面向对象编程(OOP:Object Oriented Programming)的一个主要特性——继承。
继承:派生自同一个基类的不同类的对象具有一些共同特征。
继承的功能:解决代码复用问题。
通过继承产生的类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。
继承的种类:单继承和多继承。
继承的实现方式:
- 实现继承:使用基类的方法和属性而无需额外编程的能力。
- 接口继承:父类定义了属性和方法的名称,但是没有实现,子类需要实现 父类的方法
继承
单继承
class Person(object):
def run(self):
print('people can run')
class Child(Person):
def say(self):
print('i am a person')
a = Child()
a.run()
a.say()
>>>
people can run
i am a person
多重继承的MRO列表原理
MRO——Method Resolution Order(方法解决顺序)
主要用于多继承时判断属性的来源。
MRO列表主要是采用了C3线性化算法实现的,这里不拓展,可自行百度。
主要有以下个特性:
- 多个父类时,会根据它们在列表中顺序进行查找。
- 如果属性在下面两个父类都有合法的选择,则选择子类从左到右继承的第一个父类。
- 属性如果在子类中找到,则子类优先于父类。
多继承
class Person(object):
def run(self):
print('people can run'