面向对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象相关的知识,希望对你有一定的参考价值。
---恢复内容开始---
面向对象的三大特性
封装、继承、多态
继承
定义:什么是什么的关系。一个类是另一个类的子类。
新建的类可以继承一个或多个父类(父类又称基类、超类)
新建的类又称为(子类 、派生类)
继承分为单继承和多继承
继承的优点:减少代码的冗余,增强了代码的重用性。
继承的用法
super() 调用父类的功能和方法
1 . 在子类内部调用父类的功能和方法可以不用传入参数,直接(super().属性名)
class 父类名:
def 属性(self):
功能
class 子类名(父类名):
def 属性名(self):
super().属性名
class A:
def aa(self):
print(11)
class B(A):
def aa(self):
super().aa()
b = B()
b.aa()
2.在子类外部调用父类的功能和方法
必须要给super 传入两个参数,一个是子类名,一个是对象名 .属性()
class 父类名:
def 属性(self):
功能
class 子类名(父类名):
pass
对象 = 子类名()
super(子类名,对象).属性()
class A:
def aa(self):
print(11)
class B(A):
pass
b = B()
super(B,b),aa()
当子类和父类中有同名的方法和属性时,一定是调用自己的。
如果想要调用父类的方法和属性时,需要借用super来调用。
对象调用方法,self就会指向谁。
自己私有的方法叫做派生方法,自己私有的属性叫做派生属性
抽象与继承的关系
抽象类和接口类
抽象类定义:
可以实现具体的某个功能,并且不支持多继承的父类
接口类定义:
不实现具体的方法并且推荐多继承的这个父类
abc模块:
用于接口类和抽象类中的一个模块ABC是Abstract Base Class
object 是所有的基类
新式类和经典类
经典类: class 父类名: (深度优先)
新式类: class 父类名(object): (广度优先)
广度优先(一层一层的至到没有结点)
从左到右每个分支查找完毕到他们的共同父类下的子类后,在去查找下一条分支,直到共同父类下的分组查找完毕后最后在查找他们共同的父类。
深度优先:(遍历)
从左到右每个分支查看到底,在进行下一个分支的查找,如果有共同的父类,在查找的第一个分支,就会查找这个共同的父类,然后在进行下一个分支的查找,在后面查找是不会在去查找他们共同 的父类
mro() 可以查看寻找的顺序,经典类中不能使用
多态
一种事物的多种形态叫做多态,指一个参数 的多种形态
python 是自带多态
鸭子类型:在各种数据类型之间他们没有任何的联系,但是他们拥有着一些共同的属性或者功能
---恢复内容结束---
以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章