查找dataclass属性的类型提示名称

2024-06-25 23:32:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有类型化属性的数据类,使用我定义的类型,如下所示:

from dataclasses import dataclass

PositiveFloatType = NewType("PositiveFloat", float)

@dataclass(init=False, frozen=True)
class Foo:
    bar: PositiveFloatType = 1

在运行时,我想使用Foo.bar类型。也就是说,我想找到类Foo的所有属性,并知道它们的类型名称,如果是Foo.bar-获取“PositiveFloatType”

我试着用inspect但没有用。有没有办法做到这一点


Tags: 数据fromimport类型属性定义foobar
2条回答

另一种选择是,考虑到f.type可以是字符串这一事实,我假设您实际上需要具体的类对象

from typing import Any, Type, get_type_hints

def get_field_type(data_class: Type[Any], field_name: str) -> Type[Any]:
   return get_type_hints(data_class)[field_name]   

这就是dataclasses模块为^{}函数提供的功能:

from dataclasses import fields

for f in fields(Foo):
    print(f.name, f.type.__name__)

相关问题 更多 >