Python Класс "Константы" в классах данных - PullRequest
2 голосов
/ 25 января 2020

Понимая, что нижеприведенные значения не являются истинными константами, пытаюсь следовать PEP 8 Я бы хотел сделать "константу" в моем @dataclass в Python 3.7.

@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 / ha sh? Есть ли предпочтительный стиль для этих констант?

1 Ответ

4 голосов
/ 25 января 2020

Они одинаковы. dataclass игнорирует аннотированные переменные при определении того, что использовать для генерации __init__ и др. SEED - это просто атрибут класса без подсказки.

Если вы хотите указать подсказку типа для атрибута класса, вы используете typing.ClassVar для указания типа, чтобы dataclass не принял его за атрибут экземпляра.

from dataclasses import dataclass
from typing import ClassVar


@dataclass
class MyClass:
    data: DataFrame
    SEED: ClassVar[int] = 8675309
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...