0

Pythonでクラスをいじろうとしています。次のコードを実行しようとしました。

class Abc:
    def a(self):
        print ("not to be seen")
    def b(self):
        print("inaccessible is")
        self.a

say = Abc()
say.b

私は出力を期待しています

inaccessible is
not to be seen

代わりに、次の出力が得られます。

SyntaxError: invalid syntax

強調表示されます。

誰かが私が間違っていることを指摘してください。

編集: IDLE GUI を使用しています。Python 33 は Python docs を言います。

4

3 に答える 3

2

Python は構文を非常に明確にするのが好き()です。他の言語のようにパラメーターなしで関数を呼び出す場合、関数の後の s はオプションではありません。

関数を「宣言」するだけで呼び出しているわけではありません。

試す

class Abc:
    def a(self):
        print ("not to be seen")
    def b(self):
        print("inaccessible is")
        self.a()

say = Abc()
say.b()

これがコードの動作です。

構文的には、コードは有効です。

于 2013-07-30T08:29:34.687 に答える
0

OK、Idle for Python 3.3.0 をインストールすることでエラーを再現できました。IDLE は red 以外を生成しないため、エラー メッセージ全体を含めなかったのではないかと疑っていたことをお詫びしますSyntaxError: invalid syntax。コードにもクラス定義にも問題はありません。

おそらく、コードをそのまま Python シェル ウィンドウに貼り付けているだけでしょう。このようにすると、インデントが正しく生成されないため、うまくいきません。class Abc:この行をシェル ウィンドウに貼り付けて、 を押してみてくださいEnter。IDLE が自動的に次の行をタブでインデントすることがわかります。これは次の行の正しいインデントなので、入力するときはdef a(self):余分なインデントなしで貼り付ける必要があります。行ごとに貼り付け、必要に応じてインデントを 1 つ減らし、クラス定義を余分な で終了するとEnter、コードが正しく実行されます。

ただし、次の方法を使用することをお勧めします。

  • ファイルをエディターに貼り付け、名前を付けて保存しますwhatever.py
  • IDLE で、File -> Openこのファイルを選択して開きます
  • 新しいウィンドウが開き、ソース コードが表示されます。
  • 今、押すF5か言ってくださいRun -> Run Module
  • コードが実行され、結果が Python シェルに表示されます。

または、直接実行することにより、Python をシェルで直接使用することをお勧めpython whatever.pyします。

于 2013-07-30T14:01:37.130 に答える