2011-03-16 52 views
1

這是我的代碼:如何調用在同一個字典的方法使用python

a= {'u': lambda x: x*x,'b':self.u(5)} 

print a['u'](5) 
print a['b'] 

但它顯示錯誤:

Traceback (most recent call last): 
    File "a.py", line 6, in <module> 
    a= {'u': lambda x: x*x,'b':self.u(5)} 
NameError: name 'self' is not defined 

所以如何打印[ 'B']

謝謝

+0

這不是javascript。使用真正的課程 – nosklo 2011-03-16 11:29:54

回答

5

首先想到:爲什麼你不使用類?

class A: 
    def u(x): 
     return x*x 
    def b(): 
     return self.u(5) 
a = A() 

退一步講:如果你真的必須使用字典做(?不過說真的,你必須),試試這個:

a = {'u': lambda x: x*x} 
a['b'] = a['u'](5) 

既然你不打算使用對象的方法,沒有self

0

我不確定你爲什麼想這樣做,但這是不可能的,你可以逐個指定字典,

a= {'u': lambda x: x*x} 
a['b'] = a['u'](5) 

或首先定義該功能,然後使用它,例如,

f = lambda x: x*x 
a= {'u': f, 'b': f(5)} 
相關問題