1

我对 Python 很陌生,我有这样的代码:

class Configuration:
 @staticmethod
 def test():
    return "Hello World"

test当我像这样从其他 python 代码调用该方法时:

import test

test.Configuration.test()

我收到这样的错误:

Traceback (most recent call last):
  File "example.py", line 3, in <module>
    test.Configuration.test()
AttributeError: 'module' object has no attribute 'test'

我在哪里犯了错误?

编辑:

我的目录结构:

root
--example.py
--test
----__init.py__
----Configuration.py
4

2 回答 2

2

Python 模块名称和它们包含的类是分开的。您需要使用完整路径:

import test

print test.Configuration.Configuration.test()

您的test包有一个名为 的模块Configuration,该模块内部是您的Configuration类。

请注意,与 Java 不同,Python 也允许您在类之外定义方法,无需将其设为静态方法。您也不需要为每个班级使用单独的文件。

于 2013-04-22T10:27:17.663 回答
0

尝试将您的模块重命名为“test”以外的名称,因为这是标准库模块的名称(http://docs.python.org/2/library/test.html),并且您可能正在导入该模块而不是你自己的。另一种选择是将包含测试模块的目录添加到 PYTHONPATH 环境变量中,以便 python 可以找到它而不是标准库模块(但不建议这样做,因为它会隐藏标准模块并且您将无法导入稍后再说)。

要检查您从哪个文件导入,请执行以下操作:

import test
print test
于 2013-04-22T10:19:42.887 回答