python成员属性特性
python成员属性内存特性
这篇博客主要分享一下python成员属性的内存特性,也就是python底层节约内存的优化方案
成员属性的默认值
假设我们在定义成员属性是给他一个默认值,那么所有的实例中的成员属性都是指向同一块内存,而不是每个实例创建不同的内存空间去存储成员属性,下面的代码实例
class MemoryCharacter(object):
def __init__(self):
self.aData: str = "123"
m1 = MemoryCharacter();
m2 = MemoryCharacter();
print(id(m1.aData), id(m2.aData));
m1.aData和m2.aData的内存地址都是一样的
2536375837360 2536375837360
python成员属性的内存会不会导致数据出问题
上面的代码实例可以看出,两个实例的成员属性的指向都是一样的,那么会不会出现这样的情况,就是修改m1.aData的值会不会改变m2.aData的值
class MemoryCharacter(object):
def __init__(self):
self.aData: str = "123"
m1 = MemoryCharacter();
m2 = MemoryCharacter();
m1.aData = "333";
print(m1.aData, m2.aData);
print(id(m1.aData), id(m2.aData))
<