其實Python是不存在指針這一個說法的,更不用說是函數指針了,但是也有相應的處理方式。
我這里使用這一個函數指針,其實也是為了代碼的簡潔以及擴展性,也就是說還是可以用其他的方式來實現其所需要實現的功能的。
遇到的情況是:
有一個Status狀態,當其為1的時候,需要執行函數A, 為2的時候需要執行函數B....如果可取的值很多的時候會比較麻煩。
常用的解決方法就是直接if...elif..elif....使用若干個這樣的條件語句進行處理(因為Python也沒有switch語句.....)
而遇到這種情況,'函數指針'就能夠發揮很重要的作用了,可以直接使用一個Map,key就是各種條件取值,value就是對應所需要執行的函數,所以就可以直接通過key進行函數的訪問執行了,避免了許多if和else的操作了......
1 #coding=utf-8
2
3 class Interface(object): 4 def __init__(self): 5 self.valueFunctions = { 6 'color': self.color_values, 7 'positions': self.positions_values, 8 } 9
10 def color_values(self): 11 print "color"
12
13 def positions_values(self): 14 print "positions"
15
16 def test(self): 17 self.valueFunctions['color']() 18 self.valueFunctions['positions']() 19
20 if __name__ == "__main__": 21 go = Interface() 22 go.test()