3

In support of some legacy code, I have to read a text file and parse it for statements like x=102 and file=foo.dat that might be used to overwrite default values. Note that the second one there is not file='foo.dat'; these aren't python statements, but they're close.

Now, I can get the type of the default object, so I know that x should be an int and file should be a str. So, I need a way to cast the right-hand side to that type. I'd like to do this programmatically, so that I can call a single, simple default-setting function. In particular, I'd prefer to not have to loop over all the built-in types. Is it possible?

1
  • What do you mean by "I can get the type of the default object"? Commented Apr 4, 2012 at 22:59

2 Answers 2

5
# 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) 
Sign up to request clarification or add additional context in comments.

Comments

0

It's actually pretty easy:

textfromfile = '102' defaultobject = 101 value = (type(defaultobject))(textfromfile) 

Now, value is an int equal to 102.

2 Comments

No need for the extra braces: type(defaultobject)(textfromfile)
True. I just prefer this syntax.