私はかなり典型的なクラスを持っているプログラムを書きました。このクラスでは、複数のnamedtupleオブジェクトを作成します。名前付きタプルオブジェクトは多くのアイテムを保持しますが、バインドしようとするラムダ関数を除いて、すべて正常に機能します。以下は、簡略化された例と私が受け取っているエラーメッセージです。なぜこれがうまくいかないのか誰かが知っていることを願っています。前もって感謝します!
ファイル:test.py
from equations import *
from collections import namedtuple
class Test:
def __init__(self, nr):
self.obj = self.create(nr)
print self.obj.name
print self.obj.f1(2)
def create(self, nr):
obj = namedtuple("struct", "name f1 f2")
obj.name = str(nr)
(obj.f1, obj.f2) = get_func(nr)
return obj
test = Test(1)
ファイル:equations.py
def get_func(nr):
return (lambda x: test1(x), lambda x: test2(x))
def test1(x):
return (x/1)
def test2(x):
return (x/2)
エラー:
Traceback (most recent call last):
File "test.py", line 17, in <module>
test = Test(1)
File "test.py", line 8, in __init__
print self.obj.f1(2)
TypeError: unbound method <lambda>() must be called with struct instance as first argument (got int instance instead)`