def __init__(self):
...
@dataclass
class A:
b: int
if TYPE_CHECKING:
def __init__(self, a: int):
...
PyCharm ругается, что в A.__init__ нужно вызвать super().__init__, но он же находится в if TYPE_CHECKING. Надо ли это делать?
Ты делаешь что-то странное...
в плане?
В плане — что определение метода вообще делает внутри if TYPE_CHECKING: и зачем он тебе?
для отображения аргументов датакласса
Бр... Отображения где?
при ctrl+q
но в таком случае я не увижу сразу типы аргументов
Я вообще разницы в поведении IDE не вижу между A и B на этом скрине. И уж точно не вижу повода писать по такому поводу лишний инит.
Ну и да, для типов аргументов Ctrl+P, а не Ctrl+Q
Выкинуть
что именно?
if type checking и кастомные иниты. Суть датакласса в том, что инит и другие методы генарируются
Мне лень что то думать Вот тебе ответ от клайда Sure, here's the corrected code: from dataclasses import dataclass from typing import TYPE_CHECKING if TYPE_CHECKING: class B: def init(self): ... else: B = object @dataclass class A: b: B if TYPE_CHECKING: def init(self, a: int): ... I've moved the conditional if TYPE_CHECKING outside the classes and added an else statement to assign B to object when type checking is not enabled. This ensures that the code is valid both during type checking and at runtime.
Тут за такие советы можно и бан словить...
Боятся бы бана в лес не ходить😁
Обсуждают сегодня