from...import的严重教训

    拿到别人写的python客户端的代码,在运行下面代码时出现问题:

1 !/usr/bin/env python
2 from koff import *
3 task_name = get_task()      
4 module = __import__(task_name)
5 func = getattr(module, 'tst_lstil')
6 func()

    在getattr处总是提示错误:TypeError: 'module' object is not callable,后来发现原来是from koff import *这个地方出了问题。在koff包目录下面有一个同名的getattr.py这个文件,所以导致调用时把标准模块的给覆盖了。

    这个问题主要还是处在使用from..import *上面,如果是大型的项目程序,文件名和标准模块的相同是很有可能的,所以也不好避免。对于这种情况,我的建议是谨慎使用from...import *,应该是在你的文件中需要什么就import什么,明确指出模块。

posted @ 2014-06-12 22:38  Infernal affairs  阅读(141)  评论(0编辑  收藏  举报