首页 > 代码库 > 你相信吗??Python把数字也当做对象!@@@对象,名称绑定,引用计数

你相信吗??Python把数字也当做对象!@@@对象,名称绑定,引用计数

本文学习自:http://blog.csdn.net/yockie/article/details/8474408

1.对象

Python中, 万物皆对象,包括12345等int常量。不信吗??用dir()命令看一看就知道

当然了,既然他们都叫做对象。那么肯定有共同点了!所有的对象都有下面的三个特征

* 都有唯一的标识码 id()

* 都有确定的类型

* 有内容(或称为值)

一旦对象被创建,标识码就不能更改,对象类型也是不可更改的,内容可以改变(可变对象如dict、list 。恒定对象如int、string)

而一个对象有可能:

* 有0个或者n个方法

* 有0个或者n个名字(引用计数为0,或者为n)

2.名字

我悄悄的认为,名字就是引用。一个对象可以没有或者有多个名字,对象自己不知道有多少名字,叫什么,只有名字本身知道它所指向的是个什么对象。Python将赋值语句认为是一个命名操作(或名称绑定)

 一个对象的引用计数可以为0或者为n,要访问对象必须通过名字(引用),Python中赋值操作就是一个命名操作(或名字绑定)。

名字在一定的名字空间内有效。而且唯一,就是说一个名字只能对应一个对象,而一个对象却可以有多个名字。

a = 1 在Python中的含义:

* 创建一个值为1的对象

* a是指向该对象的名字

3.绑定

绑定就是用引用指向对象,会增加该对象的引用计数。

a = a + 1  在Python中的含义:

*  创建一个新的对象,值为 a + 1

* a 这个名字指向新对象,新对象的引用计数 + 1 ,而a以前指向的对象引用计数 - 1

* a以前指向的对象值没有变

什么操作导致引用计数的变化?

* 赋值

* 在一个容器(list、 dict、seq)中包含该对象

                ——将增加对象的引用计数

* 离开当前的名字空间(该名字空间中的本地名字都会被销毁)

* 对象的一个名字被绑定到另外一个对象

* 对象被从包含它的容器中删除

* 用del()方法

                ——将减少对象的引用计数

 

你相信吗??Python把数字也当做对象!@@@对象,名称绑定,引用计数