我遇到Python导入问题。我创建了一个模块,用一个语句方便地导入模块内部的几个类。我将所有导入都放在该模块的init中,但它似乎不起作用。
maindir\
- driver.py
- Utility\
- __init__.py
- UtilityClasses.py
我的文件夹结构如上所示。 在UtilityClasses中我有一个我创建的类叫做MyClass。
在Utility文件夹的init文件中,我的代码是:
import UtilityClasses
from UtilityClasses import MyClass
在driver.py中我有代码说:
import Utility
myVar = MyClass(param1)
但是,当我运行它时,我收到一个错误,告诉我没有定义名称MyClass。
答案 0 :(得分:3)
在__init__.py
,您可以
from UtilityClasses import *
from SomeOtherFile import *
这将导入UtilityClasses.py
和SomeOtherFile.py
的所有内容。
但你仍然需要使用模块名称
更新:你可以访问这样的所有内容
在driver.py
:
from Utility import *
a = MyClass()
b = ClassInSomeOtherFile()
答案 1 :(得分:2)
您的代码
import Utility
myVar = MyClass(param1)
当然没有工作 - MyClass
没有提到它,它无处不可思议。显式优于隐式:
from Utility import MyClass
myVar = MyClass(param1)
应该像魅力一样!