为了自动生成参数化测试,我试图通过冻结现有方法的一些参数来将方法添加到类中。这是一段 Python 3 代码
class A:
def f(self, n):
print(n)
params = range(10)
for i in params:
name = 'f{0}'.format(i)
method = lambda self: A.f(self, i)
setattr(A, name, method)
但是,以下几行会产生相当令人失望的输出
a = A()
a.f0()
打印“9”(而不是“0”)。我一定做错了什么,但我看不出是什么。你能帮我吗 ?
非常感谢
编辑:这个问题确实是重复的。我想承认所有评论的质量,它们比原始答案更深入。