1. 理解类和对象的核心概念
在编程世界中,类和对象就像建筑蓝图与具体房屋的关系。类(Class)是抽象的模板,而对象(Object)是根据这个模板创建的具体实例。这种关系构成了面向对象编程(OOP)的基础框架。
1.1 类的组成要素
一个完整的类通常包含以下几个关键部分:
-
属性(Attributes):也称为成员变量或字段,用于描述类的特征。比如一个"汽车"类可能有color、brand、speed等属性。
-
方法(Methods):类的行为或功能,可以操作属性或执行特定任务。例如汽车类可以有accelerate()、brake()、changeGear()等方法。
-
构造函数(Constructor):特殊的方法,用于初始化新创建的对象。在Python中就是
__init__方法。 -
访问修饰符(Access Modifiers):控制属性和方法的可见性(如public、private、protected)。
1.2 对象的生命周期
对象从创建到销毁的完整过程包括:
- 实例化(Instantiation):使用类创建对象的过程。在Python中就是调用类名()。
- 初始化(Initialization):通过构造函数设置初始状态。
- 使用期:调用对象的方法,访问或修改属性。
- 销毁:当对象不再被引用时,由垃圾回收机制自动回收内存。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 类的高级特性
2.1 封装与信息隐藏
封装是OOP的三大特性之一(另外两个是继承和多态)。良好的封装实践包括:
- 将数据(属性)和操作数据的方法绑定在一起
- 对外隐藏内部实现细节
- 通过公共接口与对象交互
Python中虽然没有严格的访问控制,但约定:
- 单下划线前缀
_var表示"受保护"(protected) - 双下划线前缀
__var表示"私有"(private)
python复制class BankAccount:
def __init__(self, balance):
self.__balance = balance # 私有属性
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def get_balance(self):
return self.__balance
2.2 类属性与实例属性
理解这两种属性的区别至关重要:
| 特性 | 类属性 | 实例属性 |
|---|---|---|
| 定义位置 | 类内部,方法外部 | 通常在__init__中 |
| 访问方式 | 类名.属性 或 实例.属性 | 只能通过实例访问 |
| 内存存储 | 类对象一份 | 每个实例独立一份 |
| 修改影响 | 所有实例共享变化 | 只影响当前实例 |
python复制class Employee:
company = "ABC Corp" # 类属性
def __init__(self, name):
self.name = name # 实例属性
# 访问方式
print(Employee.company) # 通过类访问
emp1 = Employee("Alice")
print(emp1.company) # 通过实例访问类属性
print(emp1.name) # 实例属性
3. 特殊方法与运算符重载
Python通过特殊方法(双下划线方法)实现丰富的对象行为。这些方法让自定义类可以像内置类型一样工作。
3.1 常用特殊方法
__init__:构造函数,对象初始化__str__:定义对象的字符串表示(print()时调用)__repr__:定义对象的官方字符串表示(交互式环境显示)__eq__、__lt__等:比较运算符重载__add__、__sub__等:算术运算符重载__len__:定义对象的长度__getitem__、__setitem__:实现下标访问
3.2 实现向量类示例
``
