【问题标题】:Python Class "Constants" in Dataclasses数据类中的 Python 类“常量”
【发布时间】:2020-05-11 06:20:26
【问题描述】:

了解以下不是真正的常量,尝试遵循 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 的一部分吗?这些常量是否有首选样式?

【问题讨论】:

    标签: python constants python-3.7 python-dataclasses


    【解决方案1】:

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

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

    from dataclasses import dataclass
    from typing import ClassVar
    
    
    @dataclass
    class MyClass:
        data: DataFrame
        SEED: ClassVar[int] = 8675309
    

    【讨论】:

      猜你喜欢
      • 2012-05-27
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2021-12-28
      • 2018-01-24
      • 2021-04-10
      • 1970-01-01
      相关资源
      最近更新 更多