- 论坛徽章:
- 26
|
本帖最后由 substr函数 于 2015-11-19 13:50 编辑
我个人的看法。[ ]
class A:
cls_i = 0
cls_j = {'a': 'b'}
def __init__(self):
self.instance_i = 0
self.instance_j = {}
a = A()
a.cls_i = 1
a.cls_j = {'a': 'a'} # 实例属性设置
# 这时候 类对象 A 和 实例对象 a 各自有一个属性 cls_i, cls_j。
print(a.__dict__)
print(A.__dict__)
# {'instance_j': {}, 'cls_i': 1, 'cls_j': {'a': 'a'}, 'instance_i': 0}
# {'__init__': <function __init__ at 0x7f635ba9a6e0>, '__module__': '__main__', 'cls_i': 0, 'cls_j': {'a': 'b'}, '__doc__': None}
b = A()
b.cls_j['a'] = 'xyz' # 类对象属性设置
# b.cls_j['a'] 属性获取 实质上是指 A.cls_j['a']
# 即,这时候,获取到的是A的属性 cls_j['a']
# 因此会设置 变化了A的属性
#
print(b.__dict__)
print(A.__dict__)
# {'instance_j': {}, 'instance_i': 0} # b实例: 没属性 cls_j
# {'__init__': <function __init__ at 0x7f9f9e9196e0>, '__module__': '__main__', 'cls_i': 0, 'cls_j': {'a': 'xyz'}, '__doc__': None}
|
|