метод цепочки в питоне

(не путать с itertools.chain)

Я читал следующее: http://en.wikipedia.org/wiki/Method_chaining

Мой вопрос:what is the best way to implement method chaining in python?

Вот моя попытка:

class chain():
    def __init__(self, my_object):
        self.o = my_object

    def __getattr__(self, attr):
        x = getattr(self.o, attr)
        if hasattr(x, '__call__'):
            method = x
            return lambda *args: self if method(*args) is None else method(*args)
        else:
            prop = x
            return prop

list_ = chain([1, 2, 3, 0])
print list_.extend([9, 5]).sort().reverse()

"""
C:\Python27\python.exe C:/Users/Robert/PycharmProjects/contests/sof.py
[9, 5, 3, 2, 1, 0]
"""

Одна проблема, если звонитmethod(*args) модифицируетself.o но не возвращаетсяNone, (тогда я должен вернутьсяself или вернуть чтоmethod(*args) возвращается).

У кого-нибудь есть лучшие способы реализации цепочки? Вероятно, есть много способов сделать это.

Должен ли я просто предположить, что метод всегда возвращаетNone так что я всегда могу вернутьсяself.o ?

Ответы на вопрос(3)

Ваш ответ на вопрос