我需要我的类在引用时创建对象的新副本。
例如:
obj1 = MyClass(1,2)
obj2 = obj1
obj2.1st_att = 5
>>> print obj1
(5,2)
我希望obj1保持与obj2
的联系答案 0 :(得分:1)
在这种情况下你应该copy反对。
from copy import copy
obj1 = MyClass(1,2)
obj2 = copy(obj1)
obj2.1st_att = 5
如果您的课程很复杂并且有很多参考资料,那么也可以进行深度学检查。
答案 1 :(得分:0)
每次将Python分配给不同的变量时,Python都不会复制整数或浮点数。问题是他们不是可变的;你无法对int
做任何改变它的事情,所以无论你赋予它多少变量,你都不会有任何令人惊讶的行为。
使用obj2.1st_att = 5
,您将显式修改对象的属性。对于int
,没有模拟操作。期望此操作修改对象,并且对于持有对该对象的引用的任何其他人都可以看到此更改。
你不应该试图以任何方式解决这种行为,因为这会打破很多期望并导致错误或令人惊讶的行为本身。制作对象的副本是一件很好的事情,你需要采取明确的行动。习惯它。