数据类中的 Python 类“常量”

rha*_*ett 12 python constants python-3.7 python-dataclasses

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

@dataclass
class MyClass:
    data: DataFrame

    SEED = 8675309  # Jenny's Constant
Run Code Online (Sandbox Code Playgroud)

我的代码曾经是:

class MyClass:
    SEED = 8675309  # Jenny's Constant

    def __init__(data):
        self.data = data
Run Code Online (Sandbox Code Playgroud)

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

che*_*ner 17

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

如果要为类属性提供类型提示,请使用typing.ClassVar指定类型,以免dataclass将其误认为是实例属性。

from dataclasses import dataclass
from typing import ClassVar


@dataclass
class MyClass:
    data: DataFrame
    SEED: ClassVar[int] = 8675309
Run Code Online (Sandbox Code Playgroud)