python支持动态类型_如何在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}: {key_type.__name__} = {getattr(cls, key)}"

setattr(cls, "__init__", make_init(param))

return cls

def make_init(param:str):

locals = {}

txt = f'def __init__(self{param}):\n pass'

exec(txt, None, locals)

return locals['__init__']

@mydataclass

class MyTest:

a: int = 0

class MyORMTest(metaclass=TestORM):

a: int = 0

if __name__ == '__main__':

Test(a='a')

MyTest(a='a')

MyORMTest(a='a')

{1美元^

如何使PyCharm类型的暗示起作用?在

总而言之,我只想知道PyCharm如何处理带有dataclass的自定义类,而不使用与自定义类相关的任何存根文件。当我使用与dataclass和exec相同的实现来使我的__init__函数成为动态的,我仍然无法得到正确的类型暗示。在

PyCharm是否对特定库执行特定的解析或检查?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值