Python数据类中的常量类“Constants”

30

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

@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的一部分?这些常量有首选风格吗?

1个回答

40

它们是相同的。 dataclass 在确定要用于生成__init__等内容时会忽略未注释的变量。 SEED 只是一个未标注的类属性。

如果您想为类属性提供类型提示,可以使用typing.ClassVar指定类型,这样dataclass就不会将其误认为是实例属性。

from dataclasses import dataclass
from typing import ClassVar


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接