如何在类中使用lambda作为方法?

mu *_*u 無 8 python

这是我想要做的

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")
Run Code Online (Sandbox Code Playgroud)

但这两种方法似乎都不起作用..

>>> 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)
Run Code Online (Sandbox Code Playgroud)

如何在类中使用lambdas作为方法?

Mar*_*cin 13

您几乎没有可能使用/访问lambdas的类变量.其中三个是:

class BaseClass(object):
    successify = lambda x: "<Success>%s</Success>" % x
    errorify = lambda x: "<Error>%s</Error>" % x
    def try1(self):
        print(self.__class__.successify("try1"))
    def try2(self):
        print(self.__class__.successify("try2"))

 # or 

class BaseClass(object):
    successify = lambda x: "<Success>%s</Success>" % x
    errorify = lambda x: "<Error>%s</Error>" % x
    def try1(self):
        print(BaseClass.successify("try1"))
    def try2(self):
        print(BaseClass.successify("try2"))

# or Please not changes to lambda definitions below

class BaseClass(object):
    successify = lambda self,x: "<Success>%s</Success>" % x
    errorify = lambda self,x: "<Error>%s</Error>" % x
    def try1(self):
        print(self.successify("try1"))
    def try2(self):
        print(self.successify("try2"))    
Run Code Online (Sandbox Code Playgroud)


Thi*_*aos 9

使用 lambda self, x: "...%s..." % x