函數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
不帶任何參數。還請注意,必須在second_method
之前調用first_method
。
如果你想'test()'是一個普通的'Foo'方法,是否有任何理由不把'test()'定義爲'Foo'的普通方法,而是作爲一個局部函數'first_method()'? –
你不能。你爲什麼要這樣? – schlamar