当我使用python的时候,我很困扰目标方法()非常好,不允许使用方法(obj)。所以我想我应该试着写些代码来解决这个问题。我想到了下一个:
def globalclassfuncs(defobj):
for i in inspect.getmembers(defobj, predicate=inspect.ismethod):
def scope():
var = i[0];
setattr(sys.modules[__name__], i[0], lambda obj, *args: getattr(obj, var)(*args));
scope();
不过,这有点奇怪。当我删除def scope():
和scope()
时,它将在for循环中没有函数定义的情况下运行,或者当我将getattr()
函数更改为直接使用i[0]
而不是通过var
时,所有新定义的函数都指向上一个定义的函数,而不是它们应该指向的函数。为什么这种行为在代码中如此微小的变化上变化如此之大?你知道吗
好像是late binding closure
相关问题 更多 >
编程相关推荐