3

Python を使い始めたばかりで、アイドルとターミナルについて質問があります。

アイドル状態で、Robot.py というファイルを作成しました。

ロボットというクラスがあります

class Robot(object)

    def __init__(self,x,y):
        #some code here etc...

def HelloWorld()
    print "Hello World!"

次のような testrobot.py という別のファイルがあります。

import Robot
r = Robot(1,4)

アイドル状態で testrobot.py を実行すると、ロボット オブジェクトを正常に作成できます。ただし、端末ではエラーメッセージが表示されますNameError: Robot is not defined

ターミナルでプログラムを実行する方法がわかりません。

また:

HelloWorld()Robots.py にあるが、外部ファイル (testrobot.py など) のクラス Robot ではない関数を呼び出すにはどうすればよいですか?

前もって感謝します!

4

2 に答える 2

2

IDLEでスクリプトをロードして実行すると、インタープリター用にスクリプトが自動的にロードされます。つまり、IDLEでスクリプトを実行するとすぐに、Pythonシェルにはすでにそれらのタイプが定義されています。

IDLEの外部から実行する場合、つまり最初にモジュールを実行せずに実行する場合は、そのモジュールからロボットをインポートする必要があります。これを行うには、次のタイプではなく、モジュールをインポートします。

import Robot
myRobot = Robot.Robot(...)

または、直接使用する場合は、次の構文Robotを使用する必要があります。from ... import

from Robot import Robot
myRobot = Robot(...)

同様に、最初のケースでを使用して、または2番目のケースでインポートリストにRobot.HelloWorld追加する場合は直接、関数を呼び出すことができます。HelloWorld

from Robot import Robot, HelloWorld
myRobot = Robot(...)
HelloWorld()

ご覧のとおり、ファイルにはモジュール名(または他の言語では「名前空間」)であるため、通常は小文字で名前を付けることをお勧めします。

于 2012-11-24T16:01:22.990 に答える
1

インポートされたクラスではなく、インポートのクラスを作成しようとしています。

Robot.pyその import ステートメントで呼び出されたファイルをインポートしようとしています。ロボット クラスをインポートするには、入力import Robotしてから書き込みRobot.Robot(1,4)、そのオブジェクトを作成する必要があります。from Robot import *または、ファイルからすべての参照をインポートしてから、Robot(1,4).

IDLE で動作する理由は、基本的に実行するファイルからすべてをインポートし、そのファイル内のメソッドとクラスを使用できるようにするためです。

于 2012-11-24T15:59:13.770 に答える