dummyObjectとかを作るとき

テストの時、モデルに対応したオブジェクト作るの面倒。

dummy objectとか使う。

class ObjectLike(dict):
    def __getattr__(self, k, default=None): # default is not used
        return self[k]
    
    def __setattr__(self, k, v):
        self[k] = v

book = ObjectLike(author=ObjectLike(first_name="foo", last_name="bar"), 
                  title="BooBOoBoo")
book.price = 200

print book
print book.author
print book.title
# > {'price': 200, 'title': 'BooBOoBoo', 'author': {'first_name': 'foo', 'last_name': 'bar'}}
# > {'first_name': 'foo', 'last_name': 'bar'}
# > BooBOoBoo

method呼びだしなどを模倣したいときとか。

#foo.bar.baz(1, 2) # => 3

class foo(object):
    class bar(object):
        @staticmethod
        def baz(x, y):
            return x + y

print foo.bar.baz(1, 2)
# > 3

検索などが入るとこれだけだと足りなくなる。