小编L.G*_*ian的帖子

如何在 PyCharm 中通过元编程支持动态类型提示?

在 PyCharm 中,类型提示可以dataclass正确支持标准库。但是,当我对 mydataclass 使用相同的工具时,PyCharm 无法支持:

from dataclasses import dataclass
from typing import Tuple, Dict, TypeVar

_C = TypeVar('_C', bound=type)


class TestORM(type):
    def __new__(cls, clsname: str, bases: Tuple, clsdict: Dict):
        param = ""
        for key, key_type in clsdict.get('__annotations__', {}).items():
            param += f", {key}: {key_type.__name__} = {clsdict.get(key)}"
        clsdict['__init__'] = make_init(param)
        return super().__new__(cls, clsname, bases, clsdict)


@dataclass
class Test:
    a: int = 0


def mydataclass(cls: _C) -> _C:
    param = ""
    for key, key_type in cls.__annotations__.items():
        param += f", {key}: …
Run Code Online (Sandbox Code Playgroud)

python metaprogramming type-hinting pycharm python-3.x

5
推荐指数
1
解决办法
1891
查看次数