有人碰过类似的问题吗?
代码大致如下:
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 问题,清空过,没用
然而坚信科学不信邪不信神的我,一通调试之后,发现,莫名其妙好了........................
相关环境:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.