2

.py ファイルには次のものがあります。

class avgbox:
    def __init__(self,t,n,a):
        self.t = t
        self.n = n
        self.a = a
    def add(x):
        self.t += x
        self.n += 1
        self.a = t/n

ubuntufrom file.py import *コマンドラインからインタラクティブなpythonシェルを実行すると、エラーは表示されません。それからいつa = avgbox(0,0,0)それが言いますかNameError: name 'avgbox' is not defined。何か案は?ここで何が間違っていますか?ありがとう!

4

2 に答える 2

1

あなたのコードを「file.py」という名前のファイルにコピーして貼り付けました。次に、次のことを行いました。

from file import *

avgbox(1, 2, 3)

出来た。Pythonがモジュール名を検索するときに、現在のディレクトリ内で Python ファイルを検索している場合は、モジュールの名前に自動的に追加さfrom file.py import *れることをfrom file import *思い出してください。.pyもちろん、from構文を使用してパッケージ内を検索することもできますが、それは別の話です。

于 2013-09-12T18:40:28.333 に答える
0

ファイルが Python インタープリターと同じディレクトリにあることを確認する必要があります。また、 はパッケージ内の別のモジュールを意味するため.py、も削除する必要があります (例: ) 。ファイルがPython シェルと同じディレクトリにない場合は、Python が変数内でファイルを見つけられることを確認する必要があります。from file.py import *.pyimport os.pathPATH

また、通常は afrom file import *を実行しないでください。これは、インポート先の名前空間を汚染するためfunction_namesですmodule.function_names。実行できます。from file import function1,function2,...これにより、これらの関数のみが現在の名前空間にインポートされ、他の関数はインポートされません。

また、クラスself内の各関数の最初のパラメーターとして配置するクラスで、そうしないと構文エラーが発生することを確認してください。

于 2013-09-12T18:42:11.410 に答える