如果类中有列表,实例化类的时候,不同实例中列表是指向相同的列表空间,例如:

# -*- coding: utf-8 -*-
import copy
class test():
    name = {
        'key1':['a', 'b', 'c'],
        'key2':['1', '2', '3']
    }

if __name__ == '__main__':
    z1 = test()
    z2 = test()
    ['key1'][1] = 'zcc'
    ['key1'][1] = 'zzh'
    print
    print

运行结果:

{'key2': ['1', '2', '3'], 'key1': ['a', 'zzh', 'c']}
{'key2': ['1', '2', '3'], 'key1': ['a', 'zzh', 'c']}

想要的结果是:['key1'][1] = 'zcc'  ['key1'][1] = 'zzh'

实际的结果是:全部都设置成了zzh,此时需要对类中的列表做深拷贝。

====================================================

# -*- coding: utf-8 -*-
import copy
class test():
    name = {
        'key1':['a', 'b', 'c'],
        'key2':['1', '2', '3']
    }

if __name__ == '__main__':
    z1 = test()
    z2 = test()
    = copy.deepcopy()
    = copy.deepcopy()
    ['key1'][1] = 'zcc'
    ['key1'][1] = 'zzh'
    print
    print

运行的结果:

{'key2': ['1', '2', '3'], 'key1': ['a', 'zcc', 'c']}
{'key2': ['1', '2', '3'], 'key1': ['a', 'zzh', 'c']}