Python查询';模块';对象没有属性';测试函数';

Python查询';模块';对象没有属性';测试函数';,python,module,attributes,Python,Module,Attributes,我正在尝试创建一个新的模块和方法,作为现有库的一部分 现有库名为Bly.Pht。我在这个名为Distance.py的目录中创建了一个新的*.py文件。在Distance.py中,我有以下内容: class Distance: def __init__(self, handle): self.handle = handle def test_func(t1, t2): print "correctly executing" from Bly.Ph

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

现有库名为Bly.Pht。我在这个名为Distance.py的目录中创建了一个新的*.py文件。在Distance.py中,我有以下内容:

class Distance:
    def __init__(self, handle):
        self.handle = handle

    def test_func(t1, t2):
        print "correctly executing"
from Bly.Pht import Distance    #this works fine

dist = Distance.test_func(input1, input2)
在Python shell中,我执行以下操作:

class Distance:
    def __init__(self, handle):
        self.handle = handle

    def test_func(t1, t2):
        print "correctly executing"
from Bly.Pht import Distance    #this works fine

dist = Distance.test_func(input1, input2)
我发现错误
“模块”对象没有属性“test\u func”

有人能告诉我为什么会发生这种情况吗


非常感谢。

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

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

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

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

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

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

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

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

您好,谢谢您的回复。基于此,我删除了Distance.py中的类“Distance”定义,并直接在中编写了该方法。然后,我以与最初描述相同的方式调用了该方法,并通过dist=test_func(input1,input2)调用了该方法。不幸的是,仍然抛出错误。你知道我错过了什么吗?非常感谢您的回复,请忽略我之前的评论-您的建议确实解决了问题,但我在大写/小写上犯了一个错误。再次感谢,谢谢你的回复。基于此,我删除了Distance.py中的类“Distance”定义,并直接在中编写了该方法。然后,我以与最初描述相同的方式调用了该方法,并通过dist=test_func(input1,input2)调用了该方法。不幸的是,仍然抛出错误。你知道我错过了什么吗?非常感谢您的回复,请忽略我之前的评论-您的建议确实解决了问题,但我在大写/小写上犯了一个错误。再次感谢