为什么Python会随着这个函数的微小变化而变化?

2024-06-28 10:46:40 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用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时,所有新定义的函数都指向上一个定义的函数,而不是它们应该指向的函数。为什么这种行为在代码中如此微小的变化上变化如此之大?你知道吗


Tags: 方法函数代码obj目标for定义var