面向对象
2019-03-15 16:06:03 0 举报
AI智能生成
python 面向对象
作者其他创作
大纲/内容
类的结构
第一部分:静态字段(静态变量).
私有静态字段:__变量名
公有静态字段
第二部分:动态方法.
普通方法(self),用对象去调用的
私有方法:__函数名
属性:@property:将方法伪装成属性,为了更合理.
特殊方法
__init__:特殊方法只要实例化了对象,都会执行此方法:
init:里面可以给对象封装属性
__new__方法:产生并返回对象的方法.类名+()自动触发
__call__方法:实例化的对象+()就自动触发.
__item__:
__getitem__:obj['name'] 就会触发__getitem__方法,并将'name'传入此方法中
__setitem__
__delitem__
__str__,__len__,__hash__,__repr__等等 (了解)
类方法
@classmethod(cls): 类名去调用,他会将类空间传给cls
类方法的作用:就是想要类名调用,去操控这个公共模板的内容(属性,方法等)
静态方法
@staticmethod():不用传入类空间,对象空间的方法
对象
1,对象的形成以及执行流程: 类名()自动执行object类中的__new__方法,产生并返回一个对象空间,之后执行__init__方法,给这个对象空间封装属性.直到执行完毕.
对象查询对象属性:obj1.属性名
对象可以调用类的方法:obj1.函数名(self)
对象查询对象的所有属性:obj.__dict__
对象查询类中的静态变量:obj1.变量名
空间,以及查找顺序
对象查询属性:先从对象空间去找,对象空间没有,通过类对象指针去所属类去找
类查找顺序:先从本类去找,如果没有从父类去找,.......
组合
组合就是给一个类的对象封装一个属性,这个属性值是另一个类的对象
组合的意义:让对象与对象(或者是另一个类)之间产生关系,从而使代码更具有紧密性,联系性。
接口类,抽象类
就是建立规范,让其他继承我的类按照我的标准定义方法
类,对象的定义
类:具有相同属性和方法的一类事物.
对象:类的具体表现.
类名
查询类中的所有内容(静态属性(变量),动态属性方法等):类名.__dict__
查看类中的某个公有静态属性(变量): 类名.字段名称
执行类中的方法: 一般只是通过类名调用类方法,和静态方法。
三大特性:
继承
单继承
只执行父类的静态变量:在子类中不能定义同名的静态变量。
在子类中既执行本类又执行父类的方法
父类名.方法名(self,父类此方法所需参数)
super().方法名(父类此方法所需参数)
只执行父类的方法:子类中不能定义同名的方法。
子主题
多继承
经典类: 深度优先,一条路走到黑.
新式类:C3算法,通过mro方法可以查出父类的继承顺序。
继承的优点:
1,提高代码的复用性。
2,提高代码的维护性。
3,让类与类产生关系,使得代码更具关联性。
继承的缺点:
类的耦合性增强了。
封装
给对象封装属性
给一个类封装静态变量及方法
私有成员:私有静态字段,私有方法,私有属性:__变量
私有成员:类只要加载到内存,他会将所有的私有成员变成_类名__变量名
何处调用: 只能在类内部调用,不能在派生类或者类外部调用
多态
Python默认支持多态,即一个变量可以代指不同的类型,不用规定死。比如函数的形参 func(a): 对于形参a来说,他可以代指任意数据类型。
为什么要有面向对象
1,面向对象是将相关的功能(函数)的集合,让代码更加合理的分类。
2,站在上帝的角度去考虑问题,他实际是构造了一个公共模板,通过这个公共模板实例化N多个对象,使代码具有多样性,规范性。
3,解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
0 条评论
下一页
为你推荐
查看更多