Вот что я пытаюсь сделатьКак использовать лямбда как метод внутри класса?
class BaseClass(object):
successify = lambda x: "<Success>%s</Success>" % x
errorify = lambda x: "<Error>%s</Error>" % x
def try1(self):
print successify("try1")
def try2(self):
print self.successify("try2")
Но ни один из этих методов, кажется, работают ..
>>> BaseClass().try1()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in try1
NameError: global name 'successify' is not defined
>>> BaseClass().try2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in try2
TypeError: <lambda>() takes exactly 1 argument (2 given)
Как использовать лямбды в качестве методов в классе?
Просим, пожалуйста, * не использовать *; используя «def successify (self, x): return»% s «% x» имеет больше метаданных, читает более красиво и принимает * всего 3 символа *. –
Veedrac
@ Veedrac Это то, что я использовал в конце концов, и точно по тем же причинам. Это было скорее наткнулось на ситуацию, когда я не мог понять, почему лямбды не работают. FWIW, я почти ожидал, что это не будет поддержано и захочет найти соответствующие причины, если они есть. –