为了支持一些遗留代码,我必须读取一个文本文件并将其解析为类似x=102
和file=foo.dat
可能用于覆盖默认值的语句。请注意,第二个没有file='foo.dat'
;这些不是 python 语句,但它们很接近。
现在,我可以得到type
默认对象的,所以我知道它x
应该是一个 int 并且file
应该是一个 str。因此,我需要一种将右侧转换为该类型的方法。我想以编程方式执行此操作,以便我可以调用一个简单的默认设置函数。特别是,我宁愿不必遍历所有内置类型。可能吗?
为了支持一些遗留代码,我必须读取一个文本文件并将其解析为类似x=102
和file=foo.dat
可能用于覆盖默认值的语句。请注意,第二个没有file='foo.dat'
;这些不是 python 语句,但它们很接近。
现在,我可以得到type
默认对象的,所以我知道它x
应该是一个 int 并且file
应该是一个 str。因此,我需要一种将右侧转换为该类型的方法。我想以编程方式执行此操作,以便我可以调用一个简单的默认设置函数。特别是,我宁愿不必遍历所有内置类型。可能吗?
# Get the type object from the default value
value_type = type(defaults[fieldname])
# Instantiate an object of that type, using the string from the input
new_value = value_type(override_value)
其实很简单:
textfromfile = '102'
defaultobject = 101
value = (type(defaultobject))(textfromfile)
现在,value
是一个等于 102 的 int。