2013-07-09 6 views
32

を定義されていない、私が持っている: ":グローバル名()定義されていませんNameErrorが。"のpython:NameError:グローバル名は」...「私のコードで

class A: 
    def a(): 
     ...... 

    def b(): 
     a() 
     ...... 
    b() 

その後、コンパイラは言うだろうクラスAからすべてのものを取り除くと問題はありませんが、クラスAでどのようにメソッドを定義できますか?どうもありがとうございました。

+0

いいえ、例外をスローするコンパイラではありません。これを行うのはPythonインタプリタのループです。 –

+0

なぜクラス定義内からa()を呼び出すのですか? –

+0

@ TravisGD私はいつもJavaでこれを行います。メソッドは別のメソッドで呼び出されます。 – Robert

答えて

58

abから呼び出すには、self.a()に電話する必要があります。 aではありません。グローバル関数です。クラス上のメソッドです。

細かい詳細を確認するには、Python tutorial on classesをもう一度お読みください。

+0

ありがとうございますが、メソッドパラメータに "self"を追加する必要がありますか?a(self)、b(self)? – Robert

+0

また、Aのインスタンスをインスタンス化する前にAa()を呼び出そうとすると、Aa()メソッドを静的メソッドまたはクラスメソッドにしなければならないと思います。 〜Aa()は未定義です。 私はなぜこのことにも、また引数/参照をどのように解き放つかについてはわかりません。 –

+0

@Matthiasありがとう...私はそれを勉強しています.. – Robert