类、实例属性与 dataclass
类把数据和相关行为组织在一起。实例方法的第一个参数通常命名为 self,表示当前实例。
class Counter:
def __init__(self, initial_value: int = 0) -> None:
if initial_value < 0:
raise ValueError("初始值不能为负数")
self.value = initial_value
def increment(self) -> None:
self.value += 1
实例属性属于每个对象;类属性属于类本身。不要把可变对象作为类属性来充当每个实例的默认值,否则所有实例会共享它。
仅承载数据时,dataclass 可自动生成初始化、表示和比较等样板代码:
有可变默认值时使用 field(default_factory=list),不要写 tags: list[str] = []。