使用python时,让我感到困扰的是,虽然obj.method()很好,但不允许使用method(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():
and时scope()
,它会在for循环中不带任何函数定义的情况下运行,或者当我将getattr()
函数更改为i[0]
直接使用而不是通过through时var
,某种程度上所有新定义的函数都指向最后定义的函数,而不是它们应该使用的函数指向。为什么在如此小的代码更改中,这种行为就会发生如此大的变化?
好像是后期绑定关闭的情况
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句