python3面向对象
2022-02-20 22:02:50 0 举报
AI智能生成
python3面向对象知识整理
作者其他创作
大纲/内容
类中的特殊成员
面向对象概述<br>
⾯向对象和⾯向过程
面向过程
定义
⼀切以事物的流程为核⼼. 核⼼是"过程"⼆字。
优点
负责问题的流程化, 编写相对简单。
缺点
可扩展性差。
面向对象
定义
具有相同属性和动作的结合体叫对象。⼀切以对象为中⼼。
优点
可扩展性强。
缺点
编程的复杂度⾼于⾯向过程。
⾯向对象设计思路
类<br>
具有相同属性和行为的一类事物被称为<font color="#ffff99"><b>类</b></font>。
对象
Object是抽象概念,世间万物皆对象。Python中,具体的类的表现叫<font color="#ffff99"><b>对象</b></font>。
类与对象的关系
<font color="#ffff99"><b>类</b></font>是对事物的总结,抽象的概念。<b><font color="#ffff99">对象</font></b>是类的实例化的结果。
对象能执⾏哪些⽅法都由类来决定,类中定义了什么,对象就拥有什么。
⾯向对象三⼤特征
封装
在面向对象思想中,是把一些看似⽆关紧要的内容组合到一起,统一进行存储和使用,这就是<font color="#ffff99"><b>封装</b></font>。
封装是面向对象编程的核心思想,在类中,将对象的属性和行为封装起来,这就是封装的思想。
如把很多数据封装到一个对象中。把固定功能的代码封装到一个代码块。把函数, 对象, 打包成模块。这都属于封装的思想。
继承<br>
子类可以自动拥有父类中除了私有属性外的其他所有内容,这就是<font color="#ffff99"><b>继承</b></font>。
继承是实现重复利用的重要手段,子类通过继承复用了父类的属性和行为的同时又添加了子类特有的属性和行为。
那么什么情况可以使用继承呢? 单纯的从代码层面上来看,两个类具有相同的功能或者特征的时候,可以采用继承的形式。<br>
多态<br>
同一个对象, 可以具有多种形态,这就是<font color="#ffff99"><b>多态</b></font>。
子类继承了父类的同时,也具备了自己的特征,并且能够实现不同的效果,这就是多态化的结构。
多态的好处:程序具有超高的可扩展性。面向对象思想的核心与灵魂。python自带多态。
类的定义和使用
类的定义
定义
具有相同属性和行为的一类事物被称为<font color="#ffff99"><b>类</b></font>。
class ClassName: statement<br>
关键字
class
类名
<font color="#99ff99"><b>ClassName</b></font>:用于指定类名,采用“<font color="#99ff99">驼峰式命名法</font>”。
类体<br>
<font color="#ffff99">statement</font>:主要由类变量、方法、属性等组成。
类和对象空间<br>
类空间<br>
<b><font color="#ff99cc">创建一个类就会创建一个类的名称空间:</font></b>用来存储类中定义的所有名字,这些名字称为类的属性。
<font color="#ff99cc"><b>类名操作类中的静态变量:</b></font>用万能的点对类中的单个的变量进行<font color="#ff99cc"><b>增删改查</b></font>。
<font color="#ff99cc"><b>类名操作类中的方法 :</b></font>工作中基本不用类名去操作。
对象空间
<font color="#ff99cc"><b>类名+()的过程:</b></font><font color="#ffff99">叫实例化的过程(创建一个对象/对象空间的过程)。</font>
<font color="#ff99cc"><b>类名+()的过程:</b></font><font color="#ffff99">自动访问类中的__init__方法,将对象空间/对象内存地址传给__init__中的self(参数列表中第一个参数)。</font>
<font color="#ff99cc"><b>类名+()的过程:</b></font><font color="#ffff99">给对象封装相应的属性。</font>
<font color="#ff99cc"><b>类名+()的结果:</b></font><font color="#ffff99">产生一个实例(对象</font>, <font color="#ffff99">对象空间</font>,<font color="#ffff99">对象内存地址</font>)。<br>
<font color="#ff99cc"><b>实例化的对象:</b></font><font color="#ffff99">可以对实例变量进行增删改查,但是只能对类变量进行查操作,无法增删改。</font>
<font color="#ff99cc"><b>实例化的对象:</b></font><font color="#ffff99">调用类中的方法 (工作中通过对象执行类中的方法,而不是通过类名)。</font>
__dict__
<font color="#ff99cc"><b>__dict__方法:</b></font>查询类空间或对象空间中的所有内容。<br>
类的成员(变量)<br>
实例变量(实例字段)
<font color="#ffff99"><b>实例变量</b></font>:就是每个实例对象都拥有的变量,给对象用的。
实例化对象时自动执行构造方法__init__()对实例变量进行初始化。
<font color="#ff99ff">object</font>.<font color="#99ffff">param = value</font>:此操作为向<font color="#ff99ff">object</font>对象空间中增加<font color="#99ffff">实例变量-值</font>对:<font color="#99ffff">param = value。</font>
注意1:实例变量,每个实例对象都拥有。用对象来操作。
类变量(静态变量)
<font color="#ffff99"><b>类变量</b></font>:就是这一类事物统一拥有的变量。定义在类中且在函数体外。
注意1:类变量最好用类名来访问。当然,我们通过对象名也可以访问。但是只能查不能改,需要用类名来改变它。
注意2:类变量,属于多个对象共享,最好是⽤类名来操作,这样更加规范。
类的成员<b>(方法)</b>
构造方法
语法
def <b><font color="#99ff99">__init__</font></b>(<font color="#ff99cc">self</font>, <font color="#99ffff">parameterlist</font>):<br> <font color="#cc99ff">block</font><br>
<font color="#99ff99"><b>__init__</b></font>: 方法名,python内置。<br>
<font color="#ff99cc"><b>self</b></font>: 必要参数,表示类的实例。第一个参数必须为self。
<font color="#99ffff"><b>parameterlist</b></font>: 用于指定除self参数以外的参数。
<font color="#cc99ff"><b>block</b></font>: 方法体,实现具体功能。
实例方法
定义
所谓实例方法指,在类中定义的,通过类的实例直接访问的函数。说白了就是对象直接访问的方法。
语法
def <font color="#99ff99">functionname</font>(<font color="#ff99cc">self</font>, <font color="#99ffff">parameterlist</font>):<br> <font color="#cc99ff">block</font><br>
<font color="#99ff99"><b>functionname</b></font>: 方法名,一般小写。
<font color="#ff99cc"><b>self</b></font>: 必要参数,表示类的实例。<font color="#ff99cc"><b>实例方法的第一个参数必须为self。</b></font>
<font color="#99ffff"><b>parameterlist</b></font>: 用于指定除self参数以外的参数。<br>
<font color="#cc99ff"><b>block</b></font>: 方法体,实现具体功能。<br>
访问<br>
<font color="#ff99cc">instancename</font>.<font color="#ffff99"><font color="#99ff99">instance_method</font><font color="#99ffff">(parametervalue)</font></font>
<font color="#ff99cc"><b>instancename</b></font>: 类的实例名称。<br>
<font color="#99ff99"><b>instance_method</b></font>: 要调用的方法名称。<br>
<font color="#99ffff"><b>parametervalue</b></font>: 对应的参数列表,与<font color="#99ffff"><b>parameterlist</b></font>匹配。
静态方法
定义
在类中定义的,使用装饰器@staticmethod装饰,且参数中没有<b><font color="#ff99cc">self</font></b>和<font color="#fdb813"><b>cls</b></font>的方法。
语法
<font color="#ffff99"><b>@staticmethod</b></font><br>def <font color="#99ff99">functionname</font>(<font color="#99ffff">parameterlist</font>):<br> <font color="#cc99ff">block</font><br>
<font color="#ffff99"><b>@staticmethod</b></font>: 静态方法关键字。<br>
@staticmethod
<font color="#99ff99"><b>functionname</b></font>: 方法名,一般小写。
<font color="#99ffff"><b>parameterlist</b></font>: 用于指定的参数。<br>
<font color="#cc99ff"><b>block</b></font>: 方法体,实现具体功能。<br>
访问
<font color="#fdb813">ClassName</font>.<font color="#99ff99">static_method<font color="#99ffff">(parametervalue)</font></font>
<font color="#fdb813"><b>ClassName</b></font>: 类名。
<font color="#99ff99"><b>static_method</b></font>: 要调用的方法名称。
<font color="#99ffff"><b>parametervalue</b></font>: 对应的参数列表,与<b><font color="#99ffff">parameterlist</font></b>匹配。
静态方法和静态变量一样,属于类,<font color="#ff99cc"><b>一般都是使用类名直接访问和调用。对象也可以访问,但最好不要这么干</b></font>,以便于区分静态方法和实例方法。
类方法
定义
类方法和静态方法差不多,只是其需要在参数列表中的第一个位置预留一个参数<font color="#fdb813"><b>cls</b></font>.
语法
<font color="#ffff99"><b>@classmethod</b></font><br>def <font color="#99ff99">functionname</font>(<font color="#99ffff"><font color="#fdb813"><b>cls</b></font>, parameterlist</font>):<br> <font color="#cc99ff">block</font><br>
<font color="#ffff99"><b>@classmethod</b></font>: 静态方法关键字。<br>
@classmethod
<font color="#99ff99"><b>functionname</b></font>: 方法名,一般小写。
<font color="#fdb813"><b>cls</b></font>: 必要参数,表示类。
<font color="#99ffff"><b>parameterlist</b></font>: 用于指定的参数。<br>
<font color="#cc99ff"><b>block</b></font>: 方法体,实现具体功能。<br>
访问
<font color="#fdb813"><b>ClassName</b></font>.<font color="#99ff99">class_method<font color="#99ffff">(parametervalue)</font></font>
<font color="#fdb813"><b>ClassName</b></font>: 类名。
<font color="#99ff99"><b>static_method</b></font>: 要访问的类方法名称。
<font color="#99ffff"><b>parametervalue</b></font>: 对应的参数列表,与<b><font color="#99ffff">parameterlist</font></b>匹配。
访问类方法时不需要传递实例对象。但是,系统会自动的把类传递给第一个参数。
类的成员<b>(属性)</b>
定义
关键字
访问限制
私有变量
私有方法
类与类之间的关系
依赖关系
关联关系
组合关系
聚合关系
继承关系
子主题
子主题
子主题
子主题
0 条评论
下一页