Python
モンキーパッチ

pythonでメソッドチェーンするモンキーパッチ

モンキーパッチ

基本、pythonというものは光の世界から光を伝えに来たような言語なわけですが、
たまには気晴らしに暗黒のpythonもやってみたくなるじゃん?

だから久しぶりにモンキーパッチ書きました。
内容的には「fuga」というメソッドを持つ「hoge」というインスタンスをぶち込めば、
「hoge.fuga_to」というチェーン可能な関数を用意してくれる関数です。

def _chain(func, *arg, **kwargs):
    def wrap(*arg, **kwargs):
        func(*arg, **kwargs)
        return func.__self__
    return wrap

def chain(cls):
    for m in cls.__dir__():
        if type(cls.__getattribute__(m)) == type(cls.__init__):
            cls.__setattr__(m + '_to',_chain(cls.__getattribute__(m)))
    return cls

class Test():
    def __init__(self):
        self.r = 4
    def p(self):
        self.r = self.r + 1
        return self.r

test = Test()
chain(test)
test.p_to().p()

>> 6

で、お前これ使うの?

えー?本番で使うわけないじゃん?