我不知道你是否能理解这个问题与上述标题。别担心。这是对我问题的解释。在
我有一些Field
类的对象,和一些rules对象[来自不同类的每个规则都说RuleA、RuleB、RuleC。。。]在
我想把每个allfields对象发送到每个rule对象。如果一个规则修改了字段对象属性,它应该反映在所有其他规则中
class Field:
a = 2
b = 3
# and few more attributes
field_count = 10 #let say i have 10 fields
fields = [Field() for i in range(field_count)]
class RuleA:
def __init__(self, fields):
self.fields = fields
def process(self):
self.fields[2].a = 61
class RuleB:
def __init__(self.fields):
self.fields = fields
def process(self):
print(self.fields[2].a)
..... other rules .....
rule_a_obj = RuleA(fields)
rule_b_obj = RuleB(fields)
..... other rules initialization .....
rule_a_obj.process()
rule_b_obj.process() # should print 61
对此有什么建议/想法吗
python中的名称是指存储值的位置,而不是值本身(除了基本类型,如数字)。所以当你做一个赋值时,你复制的是一个对象的引用,而不是对象本身的完全深层克隆。在
这很容易从以下几个方面看出:
^{1}$所以我们可以通过
^{pr2}$my_dict_ref
变量修改my_dict
。在您的代码中,您已经实现了这一点,但是您调用了process()
函数两次,因此不会调用print语句。:)应改为:
相关问题 更多 >
编程相关推荐