Python类的封装,多态,多继承,子类调用父类初始化方法原理详解

Python类的封装,多态,多继承,子类调用父类初始化方法详解

                用于类的函数:

issubclass(类,类 或 类元组):判断一个类是否继承自其他的类,如果此 类 是 '类' 或 '类元组' 中的一个派生子类则返回 True ,否则返回 False

查看python内建类的方法:help(__builtins__)

封装 enclosure

封装是指隐藏类的实现细节,让使用者不用关心这些细节

封装的目的是让使用者尽可能少的使用实例变量(属性)进行操作

私有属性:

python类中,以双下划线“__”开头,不以双下划线结尾的标识符为私有成员,在类的外部无法直接访问

多态 polymorphic

字面意思:“多种状态”

多态是指在继承/派生关系的类中,调用基类对象的方法,实际能调用子类的覆盖版本方法的现象叫多态

说明:

多态调用的方法与对象相关,不与类型相关

python的全部对象都只有“运行时状态(动态)”,没有“C++/Java”里的“编译时状态(静态)”

面向对象的编程语言的特征:

封装,继承,多态

如:C++  /  Java  /  Python  /  Swift  /  C#

多继承 multiple inheritance

多继承是指一个子类继承自两个或两个以上的父类

语法:

class 类名(父类名1, 父类名2....):

语句块

说明:

1.一个子类同时继承自多个父类,父类中的方法可以同时被继承下来

2.如果两个父类中有同名的方法,而在子类中又没有覆盖此方法时,调用结果难以确定

多继承的问题(缺陷):

标识符(名字空间冲突的问题),要谨慎使用多继承

python2中采用的是深度优先,python3采用的是广度优先

继承的 MRO(Method Resolution Order)问题

类内的 __mro__ 属性用来记录继承方法的查找顺序

子类调用父类初始化最好的方法:

class Mylist(list):

def __init__(self, *args):

super().__init__(*args)


最后编辑于:2019/09/25作者: 牛逼PHP

发表评论