从字符串或列表中更改对象类型[Python]

时间:2017-10-17 08:21:29

标签: python types casting ordereddictionary

我有一个小问题。

我正在尝试通过按名称检索模型对象的属性来创建一个有序字典的函数。模型基于数据库中的数据,有时应进行转换。如果list元素是一个字符串 - 没有问题,就会创建ODictionary,并且它正在工作。但是,如果我想将例如int转换为字符串 - 则存在问题。 我用元组制作了它。第一个元素是新的OrderedDictionary项的名称,第二个元素应该是正确的类型。

例如:     elementValue = getattr(element [1],element [0]) 使用(“id”,int)我得到“AttributeError:type object'int'没有属性'id'” 所以错误的选择......

这是我第一次使用getattr。当我必须通过名称检索对象att但是如何从给定的str类型转换为不同的类型时,基本用法(对我来说)没有问题?

1 个答案:

答案 0 :(得分:1)

  

elementValue = getattr(element[1], element[0])

     

("id", int)我得到"AttributeError: type object 'int' has no attribute 'id'"所以错误选择...

getattr()的签名是object, attrname[, default] - object是您要获取属性的对象,attrname属性名称(作为字符串)和{{ 1}}如果default没有属性object,则可选默认值(如果您没有通过attrnamedefault没有属性object您获得attrname)。显然AttributeError不会进行任何类型的转换,这是你自己必须做的事情。

您没有发布足够的代码来为您提供更多提示,但假设您有一个getattr()列表(其中("attrname", typeconverter)是任何可调用的,取原始属性值并且返回转换后的值),您想要的内容如下:

typeconverter