最近,我尝试用Python存储和读取文件中的信息,遇到了一个小问题:我想从文本文件中读取类型信息。从 string 到 int 或 float 的类型转换非常有效,但从 string 到 type 的类型转换似乎是另一个问题。当然,我尝试了这样的事情:
var_type = type('int')
然而,type
不用作强制转换,而是用作查找变量类型的机制,这实际上是str
here.
我找到了一种方法来做到这一点:
var_type = eval('int')
但我通常会尽量避免像这样的函数/语句eval
or exec
我可以的地方。所以我的问题如下:是否有另一种Pythonic(并且更具体)的方法将字符串转换为类型?
我喜欢用locate
,适用于内置类型:
>>> from pydoc import locate
>>> locate('int')
<type 'int'>
>>> t = locate('int')
>>> t('1')
1
...以及它可以在路径中找到的任何内容:
>>> locate('datetime.date')
<type 'datetime.date'>
>>> d = locate('datetime.date')
>>> d(2015, 4, 23)
datetime.date(2015, 4, 23)
...包括您的自定义类型:
>>> locate('mypackage.model.base.BaseModel')
<class 'mypackage.model.base.BaseModel'>
>>> m = locate('mypackage.model.base.BaseModel')
>>> m()
<mypackage.model.base.BaseModel object at 0x1099f6c10>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)