Method chaining Python

Written by Samuel de Ancos

Method chaining, o encadenación de métodos en nuestro idioma, es una sintaxis de invocacion de múltiples métodos de un objeto.

En python podemos implementarlo fácilmente.

class MiClase:
    def __init__(self):
        self.query = []

    def add_param(self, param):
        self.query.append(param)
        return self

clase_obj = MiClase()

clase_obj.add_param('P1').add_param('P2').add_param('P3')

Como vemos la técnica es muy sencilla, básicamente se implementa como en casi todos los lenguajes orientados a objetos, devolviendo una referencia a nosotros mismos.

Resultado en consola:

>>> class MiClase:
...     def __init__(self):
...             self.query = []
...     def add_param(self, param):
...             self.query.append(param)
...             return self
... 
>>> cl = MiClase()
>>> cl.add_param(1)
<__main__.MiClase instance at 0x7fb827a17b90>
>>> cl
<__main__.MiClase instance at 0x7fb827a17b90>
>>> cl.query
[1]
>>> cl.add_param(2).add_param(3)
<__main__.MiClase instance at 0x7fb827a17b90>
>>> cl.query
[1, 2, 3]
>>> cl.add_param(2).add_param(3)
<__main__.MiClase instance at 0x7fb827a17b90>
>>> cl.add_param(2).add_param(3)
<__main__.MiClase instance at 0x7fb827a17b90>
>>> cl.query
[1, 2, 3, 2, 3, 2, 3]
>>>