码迷,mamicode.com
首页 > 编程语言 > 详细

python中对象初始化放在内存中什么位置

时间:2014-09-02 18:17:15      阅读:514      评论:0      收藏:0      [点我收藏+]

标签:http   os   使用   数据   2014   问题   sp   on   c   

bubuko.com,布布扣

截屏自《Python源码剖析》正文第一页。

也即:

bubuko.com,布布扣

当在其他class中使用

bubuko.com,布布扣

时,node是在堆中的。相当于在C中调用malloc。

不仅仅是对于像Node这样的class 的对象是存在于堆中的,在Python中就连int类型的数值同样是存在在堆中的。因为在Python中就连基本数据类型同样是对象。

让我们思考下Node中的value和self.value这两个变量:

为什么在Node中其他的方法能够调用self.value而不能够调用value?

以前我使用C/C++的思维方法来理解这个问题,现在看来貌似是错的:以前以为value是函数(方法)中的动态变量,放在栈内存中的,当函数(方法)结束之后自然而然就会释放掉动态变量的值。而根据上面的理解,value同样是放在堆中的话,如果理解成value在函数结束之后会被python的core自动回收掉可能就能够解释的通了。

而对于self.value为什么能够用则容易理解一些:self指向的是Node初始化是开辟的堆内存,在这块内存(属于初始化的实例)中有value的空间来保存属于这个实例的value值,所以在函数之外也能够进行访问。

新手理解,有错请指正,非常感谢!


python中对象初始化放在内存中什么位置

标签:http   os   使用   数据   2014   问题   sp   on   c   

原文地址:http://my.oschina.net/DanielLee/blog/309237

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!