Pregunta

I want to do the following:

pattern = cl().a().b("test").c()

where cl is a class and a, b, c are class methods.

After that I need to call pattern.to_string and it should output a string that was formed. Each method returns a string.

Now how can I achieve the above? Append the method output to a list? What about the chainable function? If I wrote the class the normal way, the above won't work.

Thank.

¿Fue útil?

Solución

Return the class instance at the end of each method and store the intermediate results in a class variable:

class MyClass:
    result = None

    def a(self):
        # do things and store in self.result
        self.result = ...
        return self

    def b(self, value):
        # do things and store in self.result
        self.result = ...
        return self

This allows you to chain the methods as desired: cl().a().b("test").c().

You can then obtain the result by looking at the value of instance.result.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top