我試圖創建一個包含已由不同函數處理的數據的列表。下面的代碼無法正常工作,因爲這兩個函數a和b是不是地圖功能在地圖中使用本地函數時的Python值錯誤
def outer_func():
def a():
return "Something"
def b():
return "Something else"
map(lambda x: eval(x)(), ['a', 'b'])
我想在一個類中封裝功能的範圍內,和下面的代碼工作得很好。
class fcontainer():
def a(self):
return "Something"
def b(self):
return "Something else"
def test():
f = fcontainer()
return map(lambda x: getattr(f, x)(), ['a', 'b'])
現在,我的問題是:
- 爲什麼A和B的地圖功能中不存在?
- 有沒有一種「正確」的方式來做我想做的事情?
- 我是否應該最終坐下來圍繞裝飾者來包裹頭部? :)
謝謝!
UPDATE:第一個例子可製成通過首先獲取的功能而outer_func的範圍之內,並且然後使用地圖的工作:
functions = [eval(i) for i in ['a', 'b']]
return map(lambda x: x(), functions)
這工作,但它的兩條線,而不是一個>: |
爲什麼要打擾你自己的班級? '@ myList.append' – Eric
@Eric有時我們傾向於監督最簡單的事情。謝謝。 – glglgl
話雖如此,使用'@ myList.append'導致'a'爲'None',但在這種情況下並不重要 – Eric