Есть ли обходной путь для ошибки mypy атрибута класса данных?

Mypy выдает ошибку с этим наследованием класса данных:

import dataclasses
import datetime

import typing


@dataclasses.dataclass
class Crud:
    creation_datetime: typing.Optional[datetime.datetime] = dataclasses.field(init=False)

    def __post_init__(self) -> None:
        self.creation_datetime = getattr(self, "creation_datetime", datetime.datetime.utcnow())


@dataclasses.dataclass
class MyFoo(Crud):
    name: str
t.py:17: error: Attributes without a default cannot follow attributes with one

Существует ли способ подавить эту ошибку или разработать код по-другому, чтобы избежать ошибки mypy?


person bux    schedule 18.04.2019    source источник
comment
Техническое объяснение и обходной путь приведены здесь: stackoverflow.com/questions/51575931/. Однако на самом деле это не отвечает на вопрос почему.   -  person Joël    schedule 26.01.2021


Ответы (1)


Для информации, этой ошибки можно избежать с помощью # type: ignore

@dataclasses.dataclass
class MyFoo(Crud):
    name: str  # type: ignore
person bux    schedule 18.04.2019