### Python全套课程笔记-chap5-面向对象
#### 1. 定义类与对象
在面向对象编程中,**类**(Class)是对象(Object)的模板或蓝图,它定义了一组相同类型的对象所具有的数据结构(属性)和行为(方法)。**对象**则是根据类创建的具体实体。
##### 1.1 类与对象的基本概念
- **类(Class)**: 描述一批对象共有的属性和行为。
- **定义格式**:
```python
class 类名:
# 执行语句
# 类变量
# 方法
```
- **类体**:
- **执行语句**:定义类时自动生成的语句,在定义类时会执行。
- **类变量**:所有对象共享的变量。
- **方法**:类中定义的函数,用于描述对象的行为。方法的第一个参数通常为`self`,用于指向调用该方法的对象实例。
- **对象(Object/Instance)**: 具体存在的实体,由类实例化而来。
- **定义格式**:
```python
obj = 类名()
```
##### 1.2 Python 的动态特性
- **动态增加或删除类变量**:
- 可以在类体中为新变量赋值以增加类变量。
- 可以在程序的任何地方为已有的类增加变量。
- 可以通过`del`语句删除类变量。
- **动态增加或删除实例变量**:
- 可以在程序的任意位置为已有对象增加实例变量。
- 可以通过`del`语句删除实例变量。
#### 2. 创建与使用对象
##### 2.1 构造方法
构造方法是一种特殊的方法,名称为`__init__`,当创建一个对象时,系统会自动调用此方法。如果没有显式定义构造方法,Python会自动提供一个仅包含`self`参数的默认构造方法。
- **定义格式**:
```python
def __init__(self, 参数1, 参数2, ...):
# 初始化操作
```
- **示例**:
```python
class Person:
def __init__(self, name='julie', age=18):
self.name = name
self.age = age
```
##### 2.2 创建对象
- **创建格式**:
```python
obj = 类名(参数1, 参数2, ...)
```
- **示例**:
```python
p = Person('keating', 23)
print(p.name, p.age)
```
##### 2.3 操作对象
- **操作实例变量**:
- 访问:`obj.实例变量`
- 修改:`obj.实例变量 = 新值`
- 删除:`del obj.实例变量`
- **操作方法**:
- 调用:`obj.方法()`
- 添加:使用`types.MethodType`将函数转化为方法,并绑定到对象上。
- 删除:`del obj.方法`
#### 3. 实例方法与自动绑定 `self`
##### 3.1 实例方法与自动绑定
- **实例方法的第一个参数`self`**:
- 当使用对象调用实例方法时,Python会自动绑定方法的第一个参数(通常建议命名为`self`)。
- 在构造方法中,`self`引用正在初始化的对象。
- 在普通实例方法中,`self`引用调用该方法的对象。
### 总结
本章节主要介绍了Python中面向对象的基础概念,包括类与对象的概念、Python的动态特性、构造方法的作用、如何创建和操作对象以及实例方法与`self`的自动绑定机制。通过理解和掌握这些基础概念,可以帮助初学者更好地理解和使用Python的面向对象编程功能。