← Backend / Python / 基础专题

15_类实例属性与方法

创建类和实例,理解 `self`、构造方法与类属性。

Python 基础专题 15:类、实例、属性与方法

学习目标:创建类和实例,理解 self、构造方法与类属性。

核心知识

类把数据与行为组织在一起。调用 Note("标题") 创建实例时,__init__ 初始化属性;实例方法的第一个参数按惯例叫 self,调用 note.rename(...) 时 Python 自动传入该实例。类适合表示有状态、有明确行为的概念,简单数据也可先用字典或 dataclass。

class Note:
    def __init__(self, title: str):
        self.title = title
        self.done = False

    def finish(self) -> None:
        self.done = True

note = Note("复习 Python")
note.finish()
assert note.done is True

self.title 是实例属性,各实例各有自己的绑定。写在类体中的 kind = "note" 是类属性,通常由实例共享;若把可变列表作为类属性,所有实例可能共享同一列表。@property 可把方法作为只读或受控属性暴露,但不要让属性读取执行昂贵或有副作用的操作。

方法分三类:实例方法接收 self;@classmethod 接收类对象 cls,常做替代构造器;@staticmethod 不自动接收实例或类,适用于与类概念相关但不依赖状态的函数。不要为了“面向对象”把所有函数都塞进类。

逐步理解

类实例是各自独立的对象:创建两个 Note 后调用其中一个的 finish(),另一个仍为 False。若把 notes = [] 写在类体中,两实例会共享这个类属性;若想各自一份,应在 __init__ 中写 self.notes = []。方法命名优先表达操作,如 finish、rename,而不只写 set_data。

动手练习

练习:给 Note 增加 rename(new_title),拒绝空白标题。答案要点:先 cleaned = new_title.strip(),为空时 raise ValueError,否则赋给 self.title。