我在運行時改變一個類的值,然後將它實例化爲一個對象,然後將該對象存儲在另一個類中並將其放入Python字典中。存儲在字典中的Python嵌套對象的問題
這裏是一個小的代碼片段,我寫來說明這個問題:
import unittest
class cls1(object):
def __init__(self, obj):
self.obj = obj
class cls2(object):
def __init__(self):
self.var = 1
class Testdict(unittest.TestCase):
def __init__(self):
self.objs = dict()
def runTest(self):
obj2 = cls2()
obj1 = cls1(cls2())
self.objs["test1"] = obj1
self.assertEqual(self.objs["test1"].obj.var, 1)
cls2.var = 2
self.assertEqual(cls2.var, 2)
obj1 = cls1(cls2())
self.objs["test2"] = obj1
self.assertEqual(self.objs["test1"].obj.var, 1)
self.assertEqual(self.objs["test2"].obj.var, 2)
if __name__ == "__main__":
d = Testdict()
d.runTest()
爲什麼被有它的變種等於2 CLS2不能實例?
我希望這個問題有道理。
請給出您的課程名稱,以大寫字母開頭。我們閱讀起來要容易得多。 – 2011-05-20 21:30:21
對不起,我通常編寫符合pep8的代碼,我只是試圖寫這個匆忙。 – disdanes 2011-05-23 14:41:43