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)