当我在其他类中调用方法时,我收到了AttributeError

时间:2013-04-22 10:11:10

标签: python

我是Python新手,我有这样的代码:

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

当我从其他python代码中调用方法test时:

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

2 个答案:

答案 0 :(得分:1)

Python模块名称及其包含的类是单独的。您需要使用完整路径:

import test

print test.Configuration.Configuration.test()

您的test软件包中有一个名为Configuration的模块,而内的该模块是您的Configuration类。

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

答案 1 :(得分:0)

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

要检查要导入的文件,请执行以下操作:

import test
print test