0

我正在尝试创建一个新模块和方法作为现有库的一部分。

现有库称为 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'

谁能告诉我为什么会这样?

非常感谢。

4

2 回答 2

2

您不是在导入Distance类,而是在导入包含Distance该类的模块。它可以固定为:

dist = Distance.Distance.test_fund(input1, input2)

如果您不打算在 中包含其他功能Distance.py,最好将类定义放在Bly/Pht/__init__.py或 中Bly/Pht.py,在这种情况下,您可以像以前一样导入它。(与其他语言不同,Python 不鼓励每个类都有自己的文件)。

于 2013-03-26T20:07:58.717 回答
1

Python 不是 Java。如果您创建了一个名为的文件Distance.py,该文件定义了一个名为的Distance,则需要from Bly.Pht.Distance import Distance。或者,如果没有充分的理由将其设为类,则直接在模块中编写方法。

于 2013-03-26T20:09:25.897 回答