1
我想定義一個函數,將其稱爲test_controller()
,並且我想將此函數傳遞給構造函數:my_thing = TestClass(test_controller)
。該功能需要能夠修改其類的數據對象。我聽說過Python 3的nonlocal
關鍵字,但我正在運行Python 2.7。可能嗎?我該怎麼做呢?這是我已經嘗試過的。修改其類的數據對象的函數
class TestClass(object):
def __init__(self, ctrl_func):
self.a = 4
self.ctrl_func = ctrl_func
def do_stuff(self):
self.ctrl_func()
def test_controller():
global a
a = 20
my_thing = TestClass(test_controller)
print my_thing.a #this prints 4
my_thing.ctrl_func()
print my_thing.a #this prints 4 but I want it to print 20
看起來不錯, 謝謝。看來self.ctrl_func()也可以工作 – Taylor
@Taylor - 第二個示例中的註釋更改。 'types.MethodType()'似乎比'__get __()'更受歡迎。 –