Python:如何返回对象的实例以及使用setattr分配的属性

时间:2011-08-09 19:17:37

标签: python setattr

我仍然是python的新手,但我需要与一些软件编程接口,这些软件是作为一堆python模块编写的(.py文件,以防我错误地将它们识别为“模块”。)这个程序有一些非常有用的和复杂的功能,我真的不可能破解(如果没有别的,因为每次我更新软件,我将不得不重新破解一切。)

我有一个如下所示的python脚本:

from software import thingfromsoftware
def mything(x,y,someboolean=True,etc)
    var=thingfromsoftware(x,y)
    #....code....
    setattr(var, 'dimensions', somearraything)
    return(var)

然后,如果我尝试:

result=mything(4,5)

然后result正确包含首先通过thingfromsoftware分配给它的所有属性的值,但result.dimensions尚未分配(has no attribute "dimensions"

目标是以{@ 1}}以半连贯的方式存储由dimensions计算和配置的每个result的{​​{1}}。

真实代码(根据要求)

myfunctionthing

1 个答案:

答案 0 :(得分:1)

你正在做

tube=io.read(str(name))

如果

TYPE!='bare'

所以在这种情况下你不会得到尺寸。这可能就是你遇到问题的原因吗?

另外,你刚试过吗

tube.dimensions = [tube.get_cell()[0, 0] / 2, tube.get_cell()[-1,-1]]

而不是setattr?仅当要更改的属性的名称存储在变量名称中时才需要它。