← 知识手册目录程序组织 · GESP 4 / 5 级相关跳到完整速查 ↓

PYTHON KNOWLEDGE · 08

类、对象、属性与方法

理解对象模型和封装边界,用类表达有状态的实体,而不是把所有程序都强行改成类。

GESP 4GESP 5

01 · FORMAL DEFINITION

正式定义

类描述一类对象的数据与行为;实例是类创建的具体对象。实例方法的第一个参数通常命名为 self,用来访问当前实例;__init__ 在实例创建后负责初始化状态。

02 · MUST KNOW

学完这一章,必须说清楚的规则

  1. 01

    实例属性通常在 __init__ 中通过 self.name = value 建立。

  2. 02

    实例方法通过 object.method() 调用;Python 会自动把实例绑定给 self。

  3. 03

    类属性由实例共享,实例属性属于单个对象;同名实例属性会遮蔽类属性。

  4. 04

    __repr__ 面向开发与调试,__str__ 面向用户显示;特殊方法应遵守其协议。

  5. 05

    继承表达“是一种”关系,组合表达“拥有一个”关系;能用组合清晰表达时不要滥用继承。

  6. 06

    对象相等默认仍是身份比较;需要按内容相等时要定义相应协议。

03 · RUNNABLE EXAMPLE

可运行示例与因果解释

PYTHON
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、抽象基类和元类是后续工程工具。
  • 算法题常用函数和基本容器更直接,不要求为了“面向对象”而增加结构。