说说 Python 的继承

Python011

说说 Python 的继承,第1张

如果要编写的类是另一个类的特殊版本时,那么就可以使用继承 。原有的类称为父类 , 新类称为子类 。 子类继承了父类的所有属性方法, 同时子类还可以自定义自己的属性和方法。

定义子类的实例时, 可以通过 子类的 __init__() 方法,给父类的所有属性赋值。

假设有这样的一个 User 类:

接着,我们定义一个 Admin 类,让它继承 User 类:

运行结果:

super() 是一个特殊函数, 它会把父类和子类关联起来。因为父类也称为超类 ( superclass),所以这个函数叫做 super。接着调用父类的 __init__() 方法, 让子类包含父类的所有属性。

子类除了拥有继承父类而来的属性和方法之外,还可以自定义子类自己的属性和方法。

一般情况下,管理员账号比普通账号,拥有更高级别的权限。因此,我们为 Admin 定义一个有别于 User 的 privileges 属性,并定义一个 “打印拥有的权限” 的新方法:

运行结果:

对于继承而来的父类方法, 如果它不符合子类所期望的行为,那么就可以对其重写。 只要在子类中定义一个与父类同名的方法,即可实现重写。

User 本身定义了一个 “是否验证通过” 的方法,Admin 是管理员,所以需要在打印日志中特别标注出来,这时就需要重写父类定义的方法:

运行结果:

通过重写父类方法, 我们就可以让子类即可以保留或改写从父类取其精华,弃其“糟粕”啦。

当实体越来越复杂,对应的类变得越来越大时, 我们可以将这个大型类拆分成多个可协同工作的小类。

比如,账号权限,其实即使是普通账号也是有某些权限的。所以我们把权限定义为一个类,然后在 Admin 中使用它:

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。

python继承是什么意思?

python继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。

相关推荐:《Python教程》以上就是小编分享的关于python继承是什么意思的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

单继承:一个派生类的基类只有一个

多继承:一个派生类的基类有多个

一句话区分就是:单继承是一个生一个,多继承是多个生一个

多继承的基本语法:

子类定义构造方法时,需要将父类的构造方法调用一次。

案例演示:

在多继承中,所有基类的方法可以直接继承,但是属性需要手工初始化。如果派生类中没有 __init__ 方法,则默认获得第一个类的属性。如果派生类中有 __init__ 方法,则所有基类的属性都不会获得,需要手动逐一初始化。

我们定义一个ChineseStudent类,其继承关系如下:

调用基类的属性和方法

在不同的基类中存在相同的方法,派生类对象调用方法时会调用哪个父类的方法呢?

默认情况下,如果多个基类中有相同的方法,越在前面,优先级越高。

为了避免后期没必要的错误,建议基类之间存在重名的属性和方法应该尽量避免。

MRO(Method Resolution Order)方法解析顺序

如果是经典类(旧式类),MRO的方法--DFS(深度优先搜索)策略

如果是新式类,MRO的方法--BFS(广度优先搜索)策略