使用字典键作为对象时,将一个对象作为另一个对象的参数发送

时间:2014-06-12 21:39:22

标签: python

这实际上与我在此提出的上一个问题相关:create multiple objects of a class with different arguments

我想知道当使用字典键作为对象时是否有办法将其中一个对象作为另一个对象发送...例如:

objects={'obj1':['object1','Tom',10],'obj2':['object2','John',13]}
dic={name: MyClass(*args) for name, args in objects.items()}

在正常编码中我会写....

obj1 = MyClass('object1','Tom',10) 
obj2 = MyClass('object2','John',obj1)

但是使用以下结构,它不接受传递对象obj1:

objects={'obj1':['object1','Tom',10],'obj2':['object2','John',obj1]}
dic={name: MyClass(*args) for name, args in objects.items()}
它给出的

(NameError:未定义全局名称'obj1'): 那么当以正确的方式使用字典键作为对象时,我该怎么做呢?

已更新 ..已添加错误消息。

1 个答案:

答案 0 :(得分:0)

objects={'obj1':['object1','Tom',10],'obj2':['object2','John',obj1]}这不会工作

然而你可以做类似

的事情
objects={'obj1':['object1','Tom',10],'obj2':['object2','John','obj1']}
fetch_ob = lambda x:objects.get(x,x)
dic = {name:MyClass(*list(map(fetch_ob,args))) for name,args in objects.items()} 

但它的粗略