Я пытаюсь создать класс данных, подобный классу, но pycharm не обеспечивает автозаполнение.
from dataclasses import dataclass
def my_data(cls):
args = ", ".join(cls.__annotations__)
func_txt = f"def __init__(self,{args}):\n pass"
ns = {}
exec(func_txt, ns)
cls.__init__ = ns['__init__']
return cls
@my_data
class Foo:
name: str
place: str
age: int
@dataclass
class Bar:
name: str
place: str
age: int
if __name__ == '__main__':
f = Foo(name="John", place="London", age=12)
Как это работает для dataclass
, но не для my_data
? Есть ли в IDE специальная логика, чтобы заставить ее работать для dataclass
, или я что-то упустил?
Обновление: Похоже, это особая логика: https://youtrack.jetbrains.com/issue/PY-27398