from foo import fooClass
dict = {'a': method1, 'b': method2}
bar = fooClass()
method = dict['a']
bar.method()
我想定义一个带有方法引用的字典,但方法定义不在字典定义的范围内。
目前,我收到一个NameError:名称'method1'未定义。
为了澄清,我已经看到了定义函数的示例,然后使用函数名称的字典在同一范围内创建,但这不是我想要做的。
答案 0 :(得分:3)
您需要将字典指向实际方法:
from foo import fooClass
dict = {'a': fooClass.method1, 'b': fooClass.method2}
由于该范围内未定义method1
,因此您需要在fooClass
类上引用该方法。
或者,如果您不想在代码中继续引用fooClass
,则可以将方法存储为字符串并使用getattr()
来执行此操作:
from foo import fooClass
dict = {'a': 'method1', 'b': 'method2'}
bar = fooClass()
method = getattr(bar.__class__, method = dict['a'])
bar.method()