我有一个由字符串、列表和两个int组成的复合对象字典。在
我在这个字典中循环,执行一些测试,然后基于这些测试将当前测试的对象保存到一个新的字典中,然后修改一些属性。到目前为止,它已经在新字典中引用了对象,所以当我更改一些属性时,旧对象也会发生更改,我希望避免这种行为。在
我尝试使用copy模块中的copy.copy
和copy.deepcopy
方法,但是由于某种原因,在复制之后我无法更改属性。他们只会保持原样。在
我应该说我对OOP很陌生,所以把所有的建议都指向白痴的水平!在
所以在下面的代码中,pathways
是pathway对象的字典,variants
只是一个列表。
names()
和{
以防万一:pathway对象持有属于该路径的基因列表(也是另一个对象)。我想找出变异列表(基因名称列表)中代表了哪些路径,然后返回一个新的(较小的)路径字典,该字典将被修改以记录每个路径中突变基因的数量。addMutant()
方法只是增加属于pathway对象的int属性。在
def method(variants, pathways):
vpathways = {}
check = 0
for var in variants:
for k,v in pathways.iteritems():
if(var in v.names()):
check +=1
vpathways[k] = copy.deepcopy(v)
vpathways[k].addMutant()
return(vpathways)
当我这样做的时候,vpathways确实包含了正确的路径,但是每个路径的突变数量仍然是0。我在addVariant()方法中添加了一个print语句,它肯定会被调用,而且突变属性的数量会增加,但不会在最后一个对象中出现。在
编辑:路径类定义:
^{pr2}$
替换前面包含的
vpathways[k]
,因此最多有一个.addMutant()
可以工作。在相关问题 更多 >
编程相关推荐