1

別のメソッドから Python の内部メソッドにアクセスしようとしていますが、これを行うと、「AttributeError: 'function' object has no attribute 'b'」というメッセージが表示されます。

私のシナリオは次のとおりです。

class Foo:
    def first_method(self):
        something
        def test(self):
           print 'Hi'

    def second_method(self):
       a = self.test()

a = self.test()はエラーをスローしています。

4

1 に答える 1

6

この関数testは、 のローカル スコープでのみ使用できますfirst_method。他の関数でアクセスしたい場合は、どこかに参照を保持する必要があります。次のようなものが機能します。

>>> class Foo:
...     def first_method(self):
...         def test():
...            print 'Hi'
...         self.test = test
...     def second_method(self):
...         self.test()
... 
>>> f = Foo()
>>> f.second_method()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 7, in second_method
AttributeError: Foo instance has no attribute 'test'
>>> f.first_method()
>>> f.second_method()
Hi

コード内の質問にいくつかの変更があることに注意してください。たとえば、この関数testは引数を取りません。first_methodの前に呼び出す必要があることにも注意してくださいsecond_method

于 2012-06-15T11:43:49.990 に答える