从另一个方法访问python中的内部方法

时间:2012-06-15 11:33:13

标签: python

我试图从另一个方法访问python中的内部方法,但是这样做会给我“AttributeError:'function'对象没有属性'b'”

我的情景是:

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

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

a = self.test()行正在抛出错误。

1 个答案:

答案 0 :(得分: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