为生成的代码获取IDE自动完成功能

问题描述

@H_404_0@我正在尝试创建类似类的数据类,但是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)
@H_404_0@

IDE auto complete for dataclass

@H_404_0@

IDE auto complete for my_data

@H_404_0@它如何用于dataclass而不适用于my_data? IDE是否具有使其适用于dataclass的特殊逻辑,或者我缺少某些东西?

@H_404_0@ 更新: 看起来这是特殊的逻辑: https://youtrack.jetbrains.com/issue/PY-27398

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)