防止类在Python中共享子类?

时间:2017-11-27 17:15:01

标签: python-2.7 class

我有以下代码,虽然它不是我的实际代码,它显示了我遇到的问题:

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

1 个答案:

答案 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

该程序的输出是: 你好世界