我有两个模块,都在同一个目录下。我正在导入twitter
包两次。
在我的mainTwitterAnalyzert.py和LibOverrider.py中,我真的不喜欢这个解决方案。我想把它分开存放,因为它可能会变大。
我首先运行TwitterAnalyzert.py
,然后重写twitter
模块中的一些方法
Do python modules get imported twice?
I found this topic. Answer:
When you do import math it is imported and put into sys.modules. Next you do import math it is checked if math is in sys.modules and fetched from there.
看看另一个话题,我不必担心导入两次。但我觉得有些事情不对。我想知道这是否有什么结论
为什么我必须在每个文件中导入?我在导入和执行overrider()
之前导入了twitter
,但它仍然丢失了:NameError: name 'twitter' is not defined
导入一次-->失败
导入2次-->正常并且覆盖正确
# Tree
.
|--Readme.md
|--\TwitterAnalyzer
|--LibOverrider.py
|--TwitterAnalyzer.py
|--__init__.py # empty file
# LibOverrider.py
import twitter # <-- I want to get rid of this
def overrider():
def show_user_items(self):
return self.__dict__.items()
twitter.User.items = show_user_items
print("Added twitter.User.items")
# TwitterAnalyzer.py
import twitter # <-- I import this firsts
import json
from LibOverrider import overrider
overrider() # <-- overriding methods in twitter module
... # rest of code
导入模块有两件重要的事情:它“加载”模块,并将其绑定到当前模块的名称空间。如果不在第二个模块中进行导入,那么第二个部分就是您所缺少的。因此,尽管
twitter
模块仍处于“加载”状态,LibOverrider
模块中的任何内容都不知道如何访问它相关问题 更多 >
编程相关推荐