您的位置:首页 > 编程语言 > Python开发

Python __call__ 和 __init__ 区别

2012-12-28 09:34 169 查看
## 记录下来python学习的道路。

这几天终于有时间可以拿过nova的源码来学习,也正好旁边有python比较精通的高人,自然多学,多问,多总结,坚持住,搞定nova。

在看nova源码的过程中,在nova中,除了import了很多第三方的mod,本地的mod,import感觉也比较随意,尤其是在import的时候,会默认执行mod中的__init__.py和py中的全局变量,全局的逻辑代码,这个让人比较纠结,说明再简单的mod都不能放过的。

看nova源码之前,还要补些基础知识,经常遇到很多callable类,表征就是在py类中定义了__call__方法,于是产生了__call__和__init__的区别是? __call__的作用又是什么呢?开问高手,答案是比较模糊,于是乎google了下。

简单说来,__call__相当于把()做了标识符重载,在使用类初始化对象的时候,调用类中的__init__方法,而程序中使用对象()的时候,调用类中的__call__方法,使得对象本身成为了函数。感觉python还是很神奇的说。

而且在python中,出现函数中定义函数,类中定义类,感觉没得章法,随性而为。于是高手解答,可以实现对类内部方法的隐藏,而方法的调用,使用的是内部的函数指针,类的函数是透明的。

python能量无穷啊,但这看起源码来,得一层层的解封装,费煞脑筋。。

参考资料:http://www.cnblogs.com/lovemo1314/archive/2011/04/29/2032871.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: