Python 中类变量的处理方式对我来说没有任何意义。似乎类变量的范围取决于它的类型!原始类型被视为实例变量,复杂类型被视为类变量:
>>> class A(object):
... my_class_primitive = True
... my_class_object = ['foo']
...
>>> a = A()
>>> a.my_class_primitive, a.my_class_object
(True, ['foo'])
>>> b = A()
>>> b.my_class_primitive, b.my_class_object
(True, ['foo'])
>>> a.my_class_object.append('bar')
>>> b.my_class_primitive, b.my_class_object
(True, ['foo', 'bar'])
>>> a.my_class_primitive = False
>>> b.my_class_primitive, b.my_class_object
(True, ['foo', 'bar'])
>>> a.my_class_primitive, a.my_class_object
(False, ['foo', 'bar'])
有人可以解释以下内容:
- 为什么会有这个功能?其背后的逻辑是什么?
- 如果我想使用原始类型(例如 bool)作为类变量,我该怎么做?