30

私は次のクラスを書きました:

class myClass(object):
    def __init__(self):
        pass

    def foo(self, arg1, arg2):
        pp = foobar(self, arg1, arg2)
        if pp:
            return 42
        else
            return -666


    def foobar(self, arg1, arg2):
        if arg1 == arg2:
            return 42
        else:
            return None

論理は無意味です-それを無視してください。私がそうしようとしているのは、別のインスタンスメソッドからインスタンスメソッドを呼び出すことです-そして私はを取得していNameErrorます。foo()これは、定義される前に呼び出したことが原因だと当初は思ってfoobar()いましたが、スクリプト内の関数定義の順序を切り替えても違いはありませんでした。

このエラーの原因とその修正方法を教えてください。

4

1 に答える 1

52

Pythonは、コードをローカルクラスに自動的にスコープしません。あなたはそれを言う必要があります。

pp = self.foobar(arg1, arg2)

http://docs.python.org/tutorial/classes.html

于 2010-11-01T12:21:37.957 に答える