我正在尝试创建一个新模块和方法作为现有库的一部分。
现有的库名为Bly.Pht。我在这个名为Distance.py的目录中创建了一个新的* .py文件。在Distance.py中,我有以下内容:
class Distance:
def __init__(self, handle):
self.handle = handle
def test_func(t1, t2):
print "correctly executing"
在Python shell中,我执行以下操作:
from Bly.Pht import Distance #this works fine
dist = Distance.test_func(input1, input2)
我收到错误'module' object has no attribute 'test_func'
有人可以告知为什么会这样吗?
非常感谢。
答案 0 :(得分:2)
您没有导入Distance
类,而是导入包含Distance
类的模块。它可以修复为:
dist = Distance.Distance.test_fund(input1, input2)
如果您不打算在Distance.py
中添加其他功能,那么将类定义放在Bly/Pht/__init__.py
或Bly/Pht.py
中可能更好一点,在这种情况下您可以导入就像你一样。 (与其他语言不同,Python不鼓励每个类都有自己的文件)。
答案 1 :(得分:1)
Python不是Java。如果您创建了一个名为Distance.py
的文件来定义名为Distance
的类,则需要from Bly.Pht.Distance import Distance
。或者,如果没有充分的理由让它成为一个类,只需直接在模块中编写方法。