好的,所以我看到了一些奇怪的东西,我想我误解了如何在python中传递函数。
class Foo:
def execute(self, **kwargs):
print "self is ", self # <foo.Foo object at 0x1012948d0>
features = {func_name: feature_func(kwargs, arg=arg)for func_name,
feature_func in Foo.ALGORITHMS.items()}
def func1(self, **kwargs):
print "self is " , self # prints {}
self._funchelp()
def __funchelp(self):
# pass
ALGORITHMS = {'func1': func1}
那么,我没有得到的是为什么自我印刷是一本空字典?
features = {func_name: feature_func(kwargs, arg=arg)for func_name,
feature_func in Foo.ALGORITHMS.items()}
上面有些东西弄乱了
接着
self._funchelp()返回 AttributeError: 'dict' object has no attribute '_Foo__funchelp'
这可能是因为您需要将dict理解中self
的第一个参数包括在内feature_func
。另外,您需要将“ **
warks ”放在前面。您可能还需要kwargs
按如下所示设置'arg'键,以避免出现某种类型的参数错误。不过不确定:
kwargs['arg'] = 123
features = {func_name: feature_func(self, **kwargs) for func_name,
feature_func in Foo.ALGORITHMS.items()}
奇怪的错误可能是因为您试图_funchelp
作为空dict对象上的属性进行访问。此外,您的函数定义为__funchelp
带有两个下划线,由于它在内部处理双下划线属性的方式而可能会被python弄乱。我认为_funchelp
一定是拼写错误,因为如果那确实是您代码中的含义,那么我认为这不会破坏名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句