我有以下代码,虽然它不是我的实际代码,它显示了我遇到的问题:
class SubObject:
value = None
class Object:
subObject = SubObject()
object0 = Object()
object0.subObject.value = 'hello'
object1 = Object()
object1.subObject.value = 'world'
print object0.subObject.value + ' ' + object1.subObject.value
我有一个类SubObject
,用于另一个类Object
但是当我创建两个Object
个变量时,它们共享同一个SubObject
实例。这让我感到非常沮丧,我的实际代码确实需要上课,所以重构成一个庞大的课程并不是我想做的事。
在python 2中运行上面的代码会打印world world
答案 0 :(得分:1)
使用适当的构造函数初始化类的数据成员。这将是解决这个问题的一种方法:
class SubObject:
def __init__ (self):
self.value = None
class Object:
def __init__ (self):
self.subObject = SubObject()
object0 = Object()
object0.subObject.value = 'hello'
object1 = Object()
object1.subObject.value = 'world'
print object0.subObject.value + ' ' + object1.subObject.value
该程序的输出是: 你好世界