面向对象知识梳理图
2022-06-25 15:24:17 10 举报
AI智能生成
面向对象知识总结梳理
作者其他创作
大纲/内容
私有静态字段:_变量名
共有静态字段
第一部分:静态字段(静态变量)
实例方法:func(self),通过对象调用
私有方法:_函数名,类内部调用
属性:@property:将方法伪装成属性,为了更合理
__init__ :初始方法,此方法主要给对象封装属性
__new__ :构造方法产生并返回对象的方法,通过类名+()触发
__call__ 方法:通过实例化的对象()触发
__getitem__:obj[\"name\"]就会触发__getitem__方法,将“name”传入此方法中
__settiem__
__delitem__
__item__系列
__len__ 方法:len(对象)触发
__hash__方法:hash(对象)触发
__str__方法:print(对象)或者str(对象)或者格式化输出'%s'%对象 触发
__repr__ 方法:repr(对象)或者格式话输出'%s'%对象 触发
__ep__ 方法:对象 == 对象 触发
__enter__方法
__exit__ 方法
代码实例
上下文管理器相关,对一个对象进行with操作时触发这两个方法
特殊方法
@classmethod(cls):类名去调用,他会将类空间穿个sls
类方法的左右:就是想要类名调用,去操控这个公共模板的内容(属性,方法等)
类方法
@staticmethod():不用传入类名,对象空间的方法
静态方法
第二部分:动态方法
类的结构
私有类的静态属性
私有对象属性
私有方法
私有成员分为三种
私有成员:只可以在类中访问,不能在类外部以及派生类中访问
类的成员按照共有私有可以分为两种:公有成员,私有成员
私有成员
类名()会产生一个对象空间obj,此空间中有对类对象指针,对象可以通过这个类对象指针找到从属的类
对象会查询属性:先从对象空间去找,对象空间没有,通过类对象指针去从属的类去找
类的查找顺序:先从本类去找,如果没有去父类去找.......
空间,以及查找顺序
依赖关系是类与类之间耦合度最低的关系,就是将一个类的类名或者对象传给另一个类的方法中 依赖关系
给一个类的对象封装一个属性,这个属性就是另个类的对象 关联,聚合,组合关系
实现也是继承关系,这个会在面向对象三大特性中详细说明
类与类之间原本灭有关系,但是为了程序的拓展,增加代码之间的耦合性,可以让类与类之间产生关系。
类与类之间的关系
方式一:提取父类,然后在父类中定义好方法,在这个方法中什么都不用干,就抛一个异常就行,这样所有的子类必须按照你定义的这个方法来不然访问的时候就会报错
方法二:使用元类描述父类,再父类中给出i一个抽象方法,这样类就不得不给抽象方法的具体实现,也可以起到约束作用
类的约束
类具有相同属性和方法的一类事务
对象类的具体表现
类对象的定义
查询类中的所有内容(静态属性(变量),动态属性方法等):类名:__dict__
1.通过万能的点 对类的属性进行增删改查
2.可以在类外部,内部,派生类中进行操作
操作类中的某个共有的静态属性(变量):类名,字段名称
执行类中的方法:一般是通过类名可以调用类方法,和静态方法
类名
如果子类中没有同名变量则可以直接,寻找
如果子类有存与父类同名的静态变量则通过super().area或者直接父类变量名的方法查找
执行父类的静态变量
父类名.方法名(self.父类此方法所需要参数)
super().方法名(父类此方法所需参数)
在子类中及执行本类又执行父类的方法
只执行父类的方法:子类中不能定于同名的方法
单继承
经典类:深度优先算法,一条路走到黑没有回头路
新式类:c3算法通过mro方法可以查出父类的继承顺序, 新式类的继承具体算法继承连接:https://www.cnblogs.com/jin-xin/articles/10274734.html
多继承
1:提高代码的复用性
2:提高代码的维护性
3:让类与类之间产生关系,是代码更具有关联性,增加耦合性(双刃剑)
继承的优点
类的耦合性更加强了
继承的缺点
继承
给对象封装属性
子主题
给一个类封装静态变量及方法
私有成员:类只要加载到内存,他会将所有的私有成员的变成:_类名,_变量名
何处调用:只能在类内部调用,不能在派生类或者类外部调用
私有成员:私有静态字段,私有方法,私有属性,:_变量
封装
python默认支持多态,即一个变量课义指代不同的类型,不用规定死,比如函数的形参function(a)对于形参a来说,它可以指代任意数据类型
python崇尚鸭子类型:长得像鸭子就是鸭子
多态
面向对象的三大特性:
1:面向对象是将相关的功能(函数)的集合,让代码更加合理的分类
2:站在上帝的角度去思考问题,它实际是构造了一个公告模板,通过这个模板实例化多个对象,使用代码更具有多样性,规范性
为什么有面向对象
1:如何产生有个对象:类名() 实例化过程
1:类名()自动执行object类中的__new__方法,产生并返回一个对象空间
2:执行__init__ 方法,将对象传给self
3:在执行__ inti__ 方法中给对象封装基础属性
实例化一个对象发生了三件事
3:对象查询对象的所有属性:obj.__dict
4:对象操作对象属性(曾删改查):obj1.属性名
5:对象查询类中的静态变量:obj1.变量名
6:对象可以调用类中的实例方法:obj1.函数名(self)
对象
面向对象知识梳理图
0 条评论
回复 删除
下一页