如果我使用如下语法导入python模块:
import my_module
我稍后可以使用一些最简单的命令来了解模块是什么,它位于何处等等。例如:
print(my_module)
输出:'my_module.py'中的模块'my_module'
dir(my_module)
输出:['MyClass','内置','文档','文件','名称','包','数学','os','sys']
我甚至可以通过使用:
找出模块的绝对路径print os.path.abspath( my_module.__file__ )
输出:/Users/julia/Documents/classes/my_module.py
但如果不是导入'my_module',我会使用:
from my_module import MyClass
我所能做的就是:
print MyClass
输出:my_module.MyClass
我确实看到MyClass来自my_module文件。但不幸的是,这是我能得到的全部,因为我以前用来获取模块信息的命令都不起作用。这是使用和他们的输出:
print dir(my_module.MyClass) NameError: name 'my_module' is not defined
print dir(my_module) NameError: name 'my_module' is not defined
print my_module name 'my_module' is not defined
在跟踪
带来的导入模块时,我应该使用什么命令(-s)from my_module import MyClass
语法?
答案 0 :(得分:1)
问题在于
from my_module import MyClass
只导入MyClass,但不导入整个模块。
如果您想知道从中导入模块MyClass的名称,您可以使用:
print MyClass.__module__
如果您想使用同一模块中的其他Stuff,您可以使用:
my_module = __import__(MyClass.__module__)
print dir(my_module)
但是写起来会容易得多:
import my_module
答案 1 :(得分:0)
谢谢Mr.Crash! 以下是摘要:
如果模块导入时使用:
from my_module import MyClass
不要直接使用其名称来调用模块。 而是通过从该模块导入的类(使用类的模块 attr)来实现它,例如:
print dir(MyClass.__module__)
print os.path.abspath( MyClass.__module__ )