Это пример разработки Fluent API, в которой ядро использует цепочку методов. Идея реализации этого в Python - возвращать экземпляр из каждого метода после выполнения того, что он должен делать.
Вот наивный пример:
In [1]: class Fluent:
...: def __init__(self, num):
...: self.num = num
...: def add_two(self):
...: self.num += 2
...: return self # this allows us for chaining
...: def result(self):
...: return self.num
...:
In [2]: f = Fluent(10)
In [3]: f.add_two().result()
Out[3]: 12
Вы можете сделать add_two
a property
, чтобы избежать вызова метода и ссылаться как атрибут:
f.add_two.result()
Редактировать: Пример с property
:
In [4]: class Fluent:
...: def __init__(self, num):
...: self.num = num
...: @property
...: def add_two(self):
...: self.num += 2
...: return self # this allows us for chaining
...: def result(self):
...: return self.num
...:
In [5]: f = Fluent(10)
In [6]: f.add_two.result()
Out[6]: 12