Python类的地址
2015-12-18 15:23
579 查看
今天写单例模式 发现一个奇怪的问题
如图,第一个print输出的地址是不同的。没有问题。
但是第二个print输出的地址相同。
这一点就很奇怪了。
下去和同事讨论了一下,猜测大概是因为GC机制导致的,匿名对象使用完毕之后再调用相同的匿名对象,引用了同一个地址。
后来又查了一下,得到的解释是在Python中把所有元素都当作对象,编译这个类的时候,会把类也作对象处理给一个地址。即使实例化类的时候传参不同,返回的也是类的地址。但是如果用变量去接受,获得的便是实例对象了。
class A(): pass p1 = A() p2 = A() print p1,p2 print A(),A()
如图,第一个print输出的地址是不同的。没有问题。
但是第二个print输出的地址相同。
这一点就很奇怪了。
下去和同事讨论了一下,猜测大概是因为GC机制导致的,匿名对象使用完毕之后再调用相同的匿名对象,引用了同一个地址。
后来又查了一下,得到的解释是在Python中把所有元素都当作对象,编译这个类的时候,会把类也作对象处理给一个地址。即使实例化类的时候传参不同,返回的也是类的地址。但是如果用变量去接受,获得的便是实例对象了。
相关文章推荐
- Learning Python(4)--错误处理
- [Python] 分布式新浪爬虫的实现
- 使用Python编写简单的端口扫描器的实例分享
- 使用python爬取豆瓣电影图片(-)
- 每天学点Python之布尔类型
- python怎么生成EXE(python3以上版本)
- python代码追踪
- python通过pyserial读写串口--2013-06-02
- Python元组
- python初学―-实现excel里面读数据进行排序
- Python(2.5)语言小结
- Python(2.5)语言小结
- Python Beginner
- python 控制台cmd运行出现乱码(原因之一)
- notepad++ 中配置 python一键运行
- Python面向对象
- Python 手记 - 8
- Python3常用模块的安装
- 自己写的第一段可运行多段数据的Python代码。。
- Python 文件操作模块 shutil 详解