软件测试|Python 基础之面向对象(四)
Python 面向对象之继承与派生
继承
python 三大特征
封装、继承、多态
三者中继承最为核心,实际应用多,感受较为直观
封装和多态略微抽象
继承的概念继承的含义:在现实生活中,继承表示人与人之间资源的从属关系例如:儿子继承父亲在编程的世界中,继承表示类与类之间的资源从属关系例如:类 a 继承类 b 继承的目的:在现实生活中,儿子继承了附件就拥有了父亲所有资源的支配权限在编程世界中,类 A 继承了类 B 就拥有了类 B 中所有的数据和方法使用权限
继承的本质继承本质应该分为两部分:当多个类中含有相同部分时,我们就把相同的部分抽离出去,将相同的部分新成一个新的类,在用刚才被抽离出去相同部分的类,去继承新的那部分,这样的好处就是,当多个类需要一个相同用的功能时,可以节省代码,不用反复编写抽象:将多个类相同的东西抽出去,形成一个新的类继承:将多个类继承刚刚抽取出来的新的类
对象>>>:数据与功能的结合体类(子类)>>>:多个对象相同功能和数据的结合体父类>>>:多个子类相同功能和数据的结合体本质:类、父类的本质都是为了节省代码,减少重复编写相同代码的时间,使用时更为方便
继承的实操
在定义类的时候,类名后方可加括号,早括号内填入其他它类的名字,就意味着继承了其它类
python 支持多类继承,括号内可填写多个类名,只需用逗号隔开即可
继承后名字查找的顺序
未继承:对象(object)自身名称空间>>>类的名称空间
单线继承:对象(object)自身名称空间>>>子类的名称空间>>>父类的名称空间
多线继承:1、菱形继承: (广度优先,最后才会找闭环的定点)对象自身名称空间>>>子类名称空间>>>父类名称空间(形参内由左至右)>>>闭环 2、非菱形继承: (深度优先)对象自身名称空间>>>子类名称空间>>>父类名称空间(形参内由左至右)
经典类与新式类
经典类:不继承 object 的类或者其子类的类新式类:继承 object 或者其之类的类
在 python3 中,只有新式类,所有类都默认继承 object
在 python2 中,区分经典类和新式类
在以后我们定义类的时候,如果没有明确的父类,可以在类的括号内填入 object,这样话能够提高我们代码的兼容性
派生
派生的概念派生是指,子类继承父类,派生出自己的属性与方法,并且重用父类的属性与方法
派生的方法 1、直接引用父类的__ init __为其传参,并添加子类属性缺点:代码重复率太高,浪费资源、时间
2、通过 super()来指向父类的属性 super()是一个特殊的类,在子类__ init __内调用 super 得到一个对象,该对象指向父类的名称空间
注意:在 python2 中 super 的使用需要完整地写成 super(自己的类名,self),而在 python3 中可以简写为 super()
评论