こんなことが?
なんか 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