什么是对象

对象的基本概念

Python中的所有事物都是以对象形式存在,从简单的数值类型,到复杂的代码模块,都是对象

对象(object)

即表示客观世界问题中的某个具体事物,又表示软件系统解空间中的基本元素
对象 = 属性 + 方法
对象以id作为标识,既包含数据(属性),也包含代码(方法),是某一类具体事务的特殊实例
image.png
dir()方法查看对象有什么属性和方法
id()查看对象的id
函数也是对象,也有一系列的属性和方法

创建对象

对象是类的实例,是程序的基本单元

要创建一个新的对象,首先必须定义一个类,用以指明该类型的对象所包含的内容(属性和方法)
同一类(class)的对象具有相同的属性和方法,但属性值和id不同

对象的名称

赋值语句给与对象以名称,对象可以有多个名称(变量引用)

对象实现了属性和方法的封装,是一种数据抽象机制

对象属性和方法的引用

引用形式

<对象名>.<属性名>
可以和一般的变量一样用在赋值语句和表达式中
例如:”abc”.upper()
返回大写的”ABC”字符串

Python语言动态的特性,使得对象可以随时增加或者删除属性或者方法

image.png

面向对象编程

面向对象编程(OOP)是一种程序设计范型,同时也是一种程序开发方法。

程序中包含各种独立又能互相调用的对象
每个对象都能接受、处理数据并将数据传递给其他对象

类的定义和调用

什么是类

类(class)是对象的模板,封装了对应现实实体的性质和行为
实例对象(Instance Objects)是类的具体化

把类比作模具,对象则是用模具制造出来的零件

为面向对象编程的三个最重要的特性提供了实现的手段

封装性、继承性、多态性

和函数相似,类是一系列代码的封装

python中约定,类名用大写字母开头,函数用小写字母开头,以便区分

定义类

class语句

class <类名>:
<一系列方法的调用>

类的初始化

class <类名>:
def init(self, <参数表>):
def <方法名>(self,<参数表>)

__init__()是一个特殊的函数名,用于根据类的定义创建实例对象,第一个参数必须为self

调用类

<类名>(<参数>)

调用类会创建一个对象,
obj = <类名>(<参数表>)
返回一个对象实例
类方法中的self指这个对象实例

使用点(.)操作符来调用对象里的方法

t = turtle.Pen() #turtle模块下的一个类Pen
t.forward(100)

实例

image.png

类定义中的特殊方法

特殊方法(special method)也被称作魔术方法(magic method)
在类定义中实现一些特殊方法,可以方便地使用python中的一些内置操作
所有特殊方法的名称以两个下划线(__)开始和结束

对象构造器

init(self, […)
对象的构造器,实例化对象时调用

析构器

del(self,[…)
销毁对象时调用

image.png
FileObject对象被销毁的时候,会调用__del__特殊方法

算术运算符

image.png

反运算

当左操作数不支持相应的操作时被调用
image.png

大小比较

image.png
image.png
image.png
image.png

自定义对象排序

image.png
image.png
image.png
image.png
image.png
image.png

类的继承

类的继承机制

image.png

image.png
image.png

子类与父类

image.png
image.png

关于self

在类定义中,所有方法的首个参数一般都是self
self的作用:在类内部,在实例化过程中传入所有数据都赋给这个变量

self实际上代表实例对象