有人碰过类似的问题吗?
代码大致如下:
class A():
def __init__(self):
self.foo = 'test'
@property
def foo(self):
return self._foo
@foo.setter
def foo(self, foo):
self._foo = foo
class B():
def __init__(self):
self.instance1 = A()
self.instance2 = A()
def test(self):
self.instance1.foo = 'testChange'
print(self.instance1.foo)
print(self.instance2.foo)
B().test()
以上代码输出是:
testChange
test
而在实际代码中,仅仅修改一个实例属性,另一个实例属性同步被修改了,即出错输出是:
testChange
testChange
折腾了我一天了,实在无奈
代码检查过,确认不是写错; git diff 过,确认修改没有问题;查看过两个实例的地址,确认过不同;怀疑过虚拟机问题,重启过,没用;怀疑过 pycache 问题,清空过,没用
然而坚信科学不信邪不信神的我,一通调试之后,发现,莫名其妙好了........................
相关环境:
- python 版本: 3.6.7
- 系统环境:ubuntu 18.04 虚拟机环境