我想要的是,我有foo.py,它从bar1和bar2导入类,它们都需要bar3,例如
食品
from src import *
...
src/初始化
from bar1 import specialSandwichMaker
from bar2 import specialMuffinMaker
src/巴1.py
import bar3
class specialSandwichMaker(bar3.sandwichMaker)
...
src/bar2.py型
import bar3
class specialMuffinMaker(bar3.muffinMaker)
...
有没有一种更有效的方法可以让bar3在bar1和bar2文件中可用,而不让它们直接导入呢?
这是完全有效的;当导入模块时,Python会将其添加到
sys.modules
。import
语句首先检查这个字典(因为字典查找很快,所以速度很快),以查看模块是否已经导入。因此,在本例中,bar1
将导入bar3
,并将其添加到sys.modules
。然后bar2
将使用已经导入的bar3
。您可以通过以下方式验证:
注意
from src import *
是错误的代码,您不应该使用它。或者import src
并使用src.specialSandwichMaker
引用,或者from src import specialSandwichMaker
。这是因为模块不应该污染彼此的名称空间——如果这样做from src import *
,那么src
中定义的所有全局变量也将出现在您的名称空间中。这很糟糕。您应该按照
http://docs.python.org/tutorial/modules.html#importing-from-a-package
相关问题 更多 >
编程相关推荐