跳转至

类、实例属性与 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 可自动生成初始化、表示和比较等样板代码:

from dataclasses import dataclass

@dataclass
class User:
    id: int
    name: str

有可变默认值时使用 field(default_factory=list),不要写 tags: list[str] = []

参考

评论