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 シェルから、次のことを行います。

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.pyDistancefrom Bly.Pht.Distance import Distance

于 2013-03-26T20:09:25.897 に答える