为什么我必须声明模块名称才能创建对象?

时间:2014-01-21 13:42:36

标签: python python-2.7

我正在使用一个定义类的模块,如下所示:

class PyTimeCode(object):
   <methods, etc.>

在python解释器中,我执行以下操作:

import pytimecode

mytc = PyTimeCode(6)

以上操作不起作用(生成NameError)。

以下作品:

import pytimecode

mytc = pytimecode.PyTimeCode(6)

为什么?

1 个答案:

答案 0 :(得分:3)

import语句的工作原理。来自documentation

  

第一种形式的import语句将本地名称空间中的模块名称绑定到模块对象,然后继续导入下一个标识符(如果有)。如果模块名称后跟as,则后面的名称将用作模块的本地名称。

如果您想使用模块内容而不使用前缀,请使用from表单:

  

from表单不绑定模块名称:它遍历标识符列表,在步骤(1)中找到的模块中查找每个标识符,并将本地名称空间中的名称绑定到找到的对象

关于您的代码的示例:

from pytimecode import PyTimeCode

mytc = PyTimeCode(6)

或(一般不推荐):

from pytimecode import *

mytc = PyTimeCode(6)