dataclass 中隐含的类变量 (RUF045)
此规则不稳定且处于预览状态。使用需要 --preview
标志。
作用
检查 dataclass 中隐含的类变量。
匹配 lint.dummy-variable-rgx
的变量会被排除在此规则之外。
为什么这不好?
类变量在类的所有实例之间共享。在 dataclass 中,没有任何类型提示的字段会被隐式地认为是类变量,如果用户尝试使用该字段初始化该类的实例,则会引发 TypeError
。
@dataclass
class C:
a = 1
b: str = ""
C(a = 42) # TypeError: C.__init__() got an unexpected keyword argument 'a'
示例
建议改为