用lambda写python class
Posted | archive
原class:
class Foo:
classVariable = 'ImAClassVariable'
def __init__(self, a, b, c):
self._a = a
self._b = b
self._c = c
def getA(self):
return self._a
@classmethod
def aClassMethod(cls):
return cls.classVariable
@staticmethod
def aStaticMethod(a, b):
return a + b
def __repr__(self):
return '<%s: %r>' % (
self.__class__.__name__,
vars(self)
)
lambda
版本:
Foo = (lambda(new): # level 1, we define our new variable.
new.classobj('Foo', (), dict( # return a class object.
classVariable = 'ImAClassVariable',
__init__ = (lambda self, a, b, c:
self.__dict__.update(dict(
_a = a,
_b = b,
_c = c
))
),
getA = lambda self: self._a,
aClassMethod = classmethod(
lambda cls: cls.classVariable
),
aStaticMethod = staticmethod(
lambda a, b: a + b
),
__repr__ = (lambda self:
'<%s: %r>' % (
self.__class__.__name__,
vars(self)
)
)
))
)(__import__('new')) # level 1 args
虽然很炫,但是new
模块不是已经要被废除了么?
Comments