PYTHON KNOWLEDGE · 08
类、对象、属性与方法
理解对象模型和封装边界,用类表达有状态的实体,而不是把所有程序都强行改成类。
GESP 4 级GESP 5 级
01 · FORMAL DEFINITION
正式定义
类描述一类对象的数据与行为;实例是类创建的具体对象。实例方法的第一个参数通常命名为 self,用来访问当前实例;__init__ 在实例创建后负责初始化状态。
02 · MUST KNOW
学完这一章,必须说清楚的规则
- 01
实例属性通常在 __init__ 中通过 self.name = value 建立。
- 02
实例方法通过 object.method() 调用;Python 会自动把实例绑定给 self。
- 03
类属性由实例共享,实例属性属于单个对象;同名实例属性会遮蔽类属性。
- 04
__repr__ 面向开发与调试,__str__ 面向用户显示;特殊方法应遵守其协议。
- 05
继承表达“是一种”关系,组合表达“拥有一个”关系;能用组合清晰表达时不要滥用继承。
- 06
对象相等默认仍是身份比较;需要按内容相等时要定义相应协议。
03 · RUNNABLE EXAMPLE
可运行示例与因果解释
class Counter:
def __init__(self, start=0):
self.value = start
def add(self, amount=1):
self.value += amount
return self.value
c = Counter(5)
print(c.add(), c.add(3))COMMON PITFALLS
常见误区
- 在方法中漏写 self
- 把每个实例独有的可变数据写成类属性
- 只为包装几个无状态函数而建类
- 继承层次过深导致行为难以追踪
SCOPE & BOUNDARIES
适用边界
- 课程使用普通类解释对象模型;dataclass、property、抽象基类和元类是后续工程工具。
- 算法题常用函数和基本容器更直接,不要求为了“面向对象”而增加结构。