無性に、「むしゃくしゃしたからやった。後悔はしていない」というコードを書きたくなったので書いた。
主な目的
class Func: pass Func.__call__ = lambda self, *args: args if bool(len(args)) else self # 上に同じ。 #setattr(Func, '__call__', lambda self, *args: args if bool(len(args)) else self) # 上に同じクラスで表すと下記の通り。 #class Func: # def __call__(self, *args): # if bool(len(args)): # return args # else # return self # 実際に実行 func_instance = Func() func_instance #=><__main__.Func instance at 0x37fc10> func_instance() #=><__main__.Func instance at 0x37fc10> func_instance()("spam") #=>('spam',) func_instance()()("spam") #=>('spam',)
感想
- すっきりした。
- 意外と汚く書けなかった。