python中简述对象和类的关系_关于python中对象与内存关系

示例代码如下:

a=0

b=a

print(id(a))

print(id(b))

#内存地址相同

b-=1

print(id(a))

#内存地址无变化

print(id(b))

#内存地址变化

arr_1=[0,1,2]

arr_2=arr_1

print(id(arr_1))

print(id(arr_2))

arr_1.pop()

print(id(arr_1))

print(id(arr_2))

#内存地址无变化

arr_2.pop()

print(id(arr_1))

print(id(arr_2))

#内存地址无变化

arr_1=arr_1[1:]

arr_2=arr_2[1:]

print(id(arr_1))

#内存地址变化

print(id(arr_2))

#内存地址变化

class Foo:

def __init__(self,num):

self.num=num

foo=Foo(0)

print(id(foo))

foo.num+=1

print(id(foo))

#内存地址无变化

foo=Foo(1)

print(id(foo))

#内存地址变化

总结:

python中 id 函数返回对象的内存地址

由以上代码可知

int为不可变类型        相互赋值的对象之间不相互影响

list为可变类型           相互赋值的对象之间相互影响

自定义类Foo与list相同,也为可变类型

另外无论是可变还是不可变类型,

当对象实现自我更新时,会自动开辟新的内存空间

例如当我们需要某个构造函数,当我们传入长度与头节点 head时,

返回一条指定长度的链表

只需要实例化一个节点类 vert,并为这个对象赋值vert=head

然后不断使 vert自我更新 vert=vert.next直到尽头

由于相互赋值的对象之间相互影响,此时 head后继有完整的链表

最后返回头节点return head即可得到结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值