如下:n和n_list是两个不同类型的类变量,在被某个实例修改后,却出现两种不同的结果。这块有点蒙圈儿了。。
# -*- coding:utf-8 -*-
class test_():
n = '123'
n_list = ['123']
def __init__(self, name, age):
self.name = name
self.age = age
t1 = test_('aaa', 'bbb')
t2 = test_('111', '222')
t1.n = '一二三'
print(t1.n) #一二三
print(t2.n) #123
print(test_.n) #123
t1.n_list[0] = '壹贰叁'
print(t1.n_list) #['壹贰叁']
print(t2.n_list) #['壹贰叁']
print(test_.n_list) #['壹贰叁']
个人觉得说是“引用”与“值”的区别是不准确的。首先你确实需要先搞清楚python的可变对象和不可变对象的区别。
但是这里的实际情况更复杂一些,你可以试下print:
如果想要彻底搞清楚这些,你去搜下python对象查找属性的具体顺序。