Question

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.

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top