我试图从另一个方法访问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()
行正在抛出错误。
答案 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
。