Вопрос

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.

Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top