相关疑难解决方法(0)

词汇从字符串转换为类型

最近,我试图在Python中存储和读取文件中的信息,并遇到了一个小问题:我想从文本文件中读取类型信息.从string到int或float的类型转换非常有效,但是从字符串到类型的类型转换似乎是另一个问题.当然,我尝试过这样的事情:

var_type = type('int')
Run Code Online (Sandbox Code Playgroud)

但是,type不是用作强制转换,而是用作查找变量类型的机制,这实际上就str在这里.

我找到了一种方法:

var_type = eval('int')
Run Code Online (Sandbox Code Playgroud)

但我一般尽量避免类似的功能/报表evalexec在那里我可以.所以我的问题如下:是否有另一种pythonic(和更具体的)方法将字符串转换为类型?

python casting

21
推荐指数
4
解决办法
1万
查看次数

验证python数据类中的详细类型

Python 3.7即将到来,我想测试一些奇特的新dataclass+打字功能.使用本机类型和typing模块中的类型,可以很容易地获得正确工作的提示:

>>> import dataclasses
>>> import typing as ty
>>> 
... @dataclasses.dataclass
... class Structure:
...     a_str: str
...     a_str_list: ty.List[str]
...
>>> my_struct = Structure(a_str='test', a_str_list=['t', 'e', 's', 't'])
>>> my_struct.a_str_list[0].  # IDE suggests all the string methods :)
Run Code Online (Sandbox Code Playgroud)

但是我想要尝试的另一件事是在运行时强制类型提示作为条件,即不应该dataclass存在具有不正确类型的类型.它可以很好地实现__post_init__:

>>> @dataclasses.dataclass
... class Structure:
...     a_str: str
...     a_str_list: ty.List[str]
...     
...     def validate(self):
...         ret = True
...         for field_name, field_def in self.__dataclass_fields__.items():
...             actual_type = type(getattr(self, …
Run Code Online (Sandbox Code Playgroud)

python typing python-dataclasses

18
推荐指数
2
解决办法
6707
查看次数

在python数据类__init__方法中强制进行类型转换

我有以下非常简单的数据类:

import dataclasses

@dataclasses.dataclass
class Test:
    value: int
Run Code Online (Sandbox Code Playgroud)

我创建了该类的实例,但我使用了一个字符串而不是整数:

>>> test = Test('1')
>>> type(test.value)
<class 'str'>
Run Code Online (Sandbox Code Playgroud)

我真正想要的是强制转换为我在类定义中定义的数据类型:

>>> test = Test('1')
>>> type(test.value)
<class 'int'>
Run Code Online (Sandbox Code Playgroud)

我必须__init__手动编写该方法还是有一种简单的方法来实现此目的?

python python-dataclasses

7
推荐指数
4
解决办法
867
查看次数

标签 统计

python ×3

python-dataclasses ×2

casting ×1

typing ×1