五、面向对象
文章目录
- 面向对象/过程
- 面向对象
- 面向过程
- 类和对象
- 类
- 对象
- 代码设计
- 定义类
- 创建对象
- 添加属性
- 获取属性
- 调用方法
- 魔法方法
- `__init__()` 构造方法
- `__str__()`
- `__del__()` 析构方法
面向对象/过程
面向对象
谁来做,注重结果
面向过程
怎么做,注重过程
类和对象
类
抽象概念,泛指具有相同或相似特征和行为的事物
- 类名:大驼峰命名法
- 属性:事物的特征
- 方法:事物的行为
对象
具体概念,特指某一个事物
代码设计
定义类
使用class
关键字定义类,类中的函数即为方法
class name: def func(self):pass
self
是普通形参,但调用时没有传递实参值。在执行代码时自动将调用这个方法的对象传递给self,因为self的本质是对象。如下图示例
创建对象
使用类名()
创建对象,要通过变量名保存对象地址,变量=类名()
添加属性
类内部,self.属性名=属性值
,在类中添加属性通常写在__int__()中
类外部,对象.属性名=属性值
,一般不使用
获取属性
类内部,self.属性名
类外部,对象.属性名
调用方法
使用对象.方法名()
调用方法
魔法方法
双前导双末尾下划线的方法,在满足条件时会自动调用,如__init__()
__init__()
构造方法
创建对象之后自动调用
- 给对象添加属性
- 创建对象必须执行的代码,用于初始化
- 如果有self以外的形参,要注意形参传递
__str__()
使用print(对象)打印对象时自动调用
- 关于对象的属性信息
- 若类中没有定义该方法,print(对象)是默认输出对象的内存地址
- 必须返回字符串
__del__()
析构方法
删除对象时自动调用
- 代码执行结束,所有对象都会被删除
- 使用
del 对象
可以删除对象,若一个对象存在多个引用,则需要删除所有引用才可彻底删除对象
class Person:def __init__(self,name,weight):self.name=nameself.weight=weightdef __str__(self):return f'{self.name}的体重是{self.weight}kg'def __del__(self):print('代码结束,删除对象')def run(self):self.weight=self.weight-0.5def eat(self):self.weight=self.weight+1a=Person('小明',75)
print(a)
a.run()
print(a)
a.eat()
print(a)