Python中的对象

此文只是对其他文章的搬运,原文链接见下

原文链接

对象的概念
在Python中,对象的定义是松散的,从感性上可以解释为:Python中一切可以赋值给变量或者作为参数传递给函数

Python的对象都有三个特性
身份:每个对象都有唯一的身份标识自己,可以用id()函数来得到任何对象的身份
类型:对象的类型决定对象可以保存什么类型的值,有哪些属性和方法,可以进行哪些操作,遵循什么样的规则
值:对象表示的数据
如果对象支持更新操作,则它的值是可变的,否则为只读

对象的创建和使用

a = 3

上面的代码创建了一个对象来表示数字3,并且将a和数字3连接,a成为对象3的一个引用。从内部看,变量是到对象的内存空间的一个指针。
可以这么理解:对象是堆上分配的一个内存空间,表示对象代表的值;变量是一个系统创建的表中的元素,拥有指向对象的引用
python会缓存某些不变的对象进行复用,而不是每次都创建新的对象

共享引用
python中变量都是指向某一对象的引用

>>>a = 1
>>>b = a
>>>a = 2
>>>b
1  #变量只是对对象的引用,改变a不会导致b的变化

但是对列表这种可变对象则不同

>a = [1, 2, 3]
>b = a
>a[0] = 0
>a
[0, 2, 3]  #这里是直接改变了对象的元素,而不是改变引用
>b
[0, 2, 3]  #由于被引用的对象发生了变化,因此b也发生了改变

由于这种可变性,要求对其进行拷贝来保持原来的列表,比如用语句‘b = a[:]’,对于没有分片概念的类型来说,可以使用copy模块中的copy()进行拷贝

对象相等
'=='用于测试俩个被引用的对象值是否相等
'is’用与比较俩个被引用的对象是否为同一个对象
在这里插入图片描述
当对象为一个较小的数字或较短的字符时结果又不一样
在这里插入图片描述
这是由于python的缓存机制造成的,小的数字和字符被缓存且复用,所以a和b指向同一个对象

对象回收机制

上边提到对象包含一个引用的计数器,计数器记录了当前指向该对象引用的数目,一旦对象的计数器为 0 ,即不存在对该对象的引用,则这个对象的内存空间会被回收。这就是 Python 中对象的回收机制,一个最明显的好处即在编写代码过程中不需要考虑释放内存空间。

可以通过 sys 模块中的 getrefcount() 函数查询一个对象计数器的值在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值