0

パラメーター化されたテストを自動的に生成するために、既存のメソッドのいくつかのパラメーターを凍結することにより、クラスにメソッドを追加しようとしています。これが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" ではなく)。私は何か間違ったことをしているに違いありませんが、何がわかりません。手伝ってくれますか ?

どうもありがとう


編集:この質問は確かに重複しています。生の回答よりもはるかに深いすべてのコメントの質に感謝したいと思います。

4

2 に答える 2