Python Class "Constants" 在数据类中

Python Class "Constants" in Dataclasses

理解以下不是真正的常量,尝试遵循 PEP 8 我想在 Python 3.7 中的@dataclass 中创建一个 "constant"。

@dataclass
class MyClass:
    data: DataFrame

    SEED = 8675309  # Jenny's Constant

我的代码曾经是:

class MyClass:
    SEED = 8675309  # Jenny's Constant

    def __init__(data):
        self.data = data

这两个在处理种子方面是等价的吗?种子现在是 init/eq/hash 的一部分吗?这些常量是否有首选样式?

他们是一样的。 dataclass 在确定使用什么来生成 __init__ 等时忽略未注释的变量。 SEED 只是一个未提示的 class 属性。

如果要为 class 属性提供类型提示,请使用 typing.ClassVar 指定类型,这样 dataclass 就不会将其误认为是实例属性.

from dataclasses import dataclass
from typing import ClassVar


@dataclass
class MyClass:
    data: DataFrame
    SEED: ClassVar[int] = 8675309