Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

メモ その1

こじんメモ
methodを委譲
なんとなくインターフェイスを切らないようにしたい場合

class Factory(object):
    
    def hoge(self, str):
        return str

class Test(object):
    
    def __init__(self, factory=Factory):
        self.code = []
        self.factory = factory()
    
    def _js_func(self, func):
        def _wrapped_func(*args, **kwargs):
            result = func(*args, **kwargs)
            self.code.append(result)
            return result
        return _wrapped_func

    def __getattr__(self, name):
        f = self._js_func(self.factory.__getattribute__(name))
        setattr(self, name, f)
        return f
    
    def __repr__(self):
        return ",".join(self.code)

t = Test()
t.hoge('12345')
t.hoge('aiueo')
print t

まああんまり使うことないかも知れない。
うくく。