|
发表于 2019-6-23 20:23:58
|
显示全部楼层
初始代码:
- class Person:
- name = ['初始']
- p1 = Person()
- p2 = Person()
- print(p1.name)
- print(p2.name)
- print(Person.name)
复制代码
验证:
- ===================== RESTART: D:\我的文件\Dsektop\test2.py =====================
- ['初始']
- ['初始']
- ['初始']
- >>> id(p1.name), id(p2.name), id(Person.name) # 初始实例因为都继承Person,所以内存地址都一样
- (59628240, 59628240, 59628240)
- >>> p1.name.append('修改') # 用append基础上修改发现内存地址不变
- >>> id(p1.name), id(p2.name), id(Person.name)
- (59628240, 59628240, 59628240)
- >>> Person.name = ['修改后'] #用这种方式直接修改类的属性,发现实例的引用地址随之改变
- >>> id(p1.name), id(p2.name), id(Person.name)
- (59683904, 59683904, 59683904)
- >>> p1.name = ['再修改'] #用实例地址发现只是改变了自己的属性,自己的地址发生了变化
- >>> id(p1.name), id(p2.name), id(Person.name)
- (59683784, 59683904, 59683904)
- >>>
复制代码
|
|