好吧,我看到了一些奇怪的东西,我想我误解了如何在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()}
上面有些东西搞砸了
然后呢
自我帮助()
返回AttributeError: 'dict' object has no attribute '_Foo__funchelp'
这可能是因为你需要把
self
作为你的dict理解中feature_func
的第一个参数。此外,还需要将**
放在kwargs前面。您可能还需要如下设置kwargs
上的'arg'键,以避免某种参数错误。但不确定:这个奇怪的错误可能是因为您试图将
_funchelp
作为一个空dict对象的属性来访问。此外,您的函数被定义为带有两个下划线的__funchelp
,这可以通过python获得mangled,因为它在内部处理双下划线属性的方式。我想_funchelp
一定是个拼写错误,因为如果你的代码中真的是这样的话,我不认为它会弄坏你的名字。你知道吗相关问题 更多 >
编程相关推荐