将方法赋值给变量



我有一个字典路径,如果设置不正确,我希望它调用命令

import os
import platform
import logging
paths={}
def setup_paths():
path_root=get_project_root()
paths['root']=path_root
paths['documents']=lambda :createError('system',0,'Folder not Found')
def createError(sender,level,error):
#Do something
return errorMessage

所以当我调用路径['documents'](或其他错误的东西),我可以处理一些事情,但仍然得到一个正常的字符串或任何[level,errorMessage]。你能像这样简单地做吗?

我可以t Tab

我试过一次lambda,然后放弃了,来到这里。我的理解是:

lambda m:method(Args)
#turns m into an abstract method method(Args) 
#so that you call m and not method(Args)

这是我所知道的唯一将方法作为参数传递的方法,参数为

所以我找到了答案,并彻底认为它很酷,想分享,所以…

#you can pass along a Method as a Variable
m=lambda arg,arg2:_method(arg,arg2)
#then call on it latter
m()

用这个我可以设置一个方法值

if: os.path.exsits(pathTOdoc): path['Document']=pathTOdoc
else: path['Documents']=lambda :errorHandle(name,errorLVL,'Document Not Found')

现在当我调用path['Documents'](或get path方法)时,它将执行一个错误处理,而我可以处理任何正常返回

像这样,你也可以给子类一个回调方法

最新更新