こんなことが?

なんか pythonの黒魔術じゃないけど、見つけました。

C = type('C',(),{'x':666, 'y':lambda self: 'Hello'})
c = C()
print c.x,c.y()

#実行結果:666 Hello 
"""
第一引数に型名、第二引数に継承するクラス、第三引数にメンバを指定
"""

よはtype関数が classになるっちゅうことですわ。
'x'とかが関数名になって lamdaで処理しないと行けないのかな。。
まぁlambdaだって複数行にできるから問題は無いけどね。

某氏のサイトからとってきました。(盗みました

randomPasswordGenerator = \
(lambda random, string: # level 1
    (lambda characters: # level 2
        lambda length: ''.join(random.choice(characters) for i in xrange(length)) # level 3
    )(string.digits + string.letters) # level 2 args
)(
    __import__('random'), # level 1 args
    __import__('string')
)

おぉ。

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

おぉお! まるで Lispじゃないか! #Lisp知りませんでした。
すごいよね。

広告を非表示にする