Calling chains methods with intermediate results

There is a pretty straightforward pattern called the Builder Pattern where methods basically return a reference to the current object, so that instead of chaining method calls on one another they are chained on the object reference.

The actual Builder pattern described in the Gang of Four book is a little verbose (why create a builder object) instead just return a reference to self from each setXXX() for clean method chaining.

That could look something like this in Python:

class Person: 
   def setName(self, name):
      self.name = name
      return self   ## this is what makes this work

   def setAge(self, age):
      self.age = age;
      return self;

   def setSSN(self, ssn):
      self.ssn = ssn
      return self

And you could create a person like so:

p = Person()
p.setName("Hunter")
 .setAge(24)
 .setSSN("111-22-3333")

Keep in mind that you will actually have to chain the methods with them touching p.a().b().c() because Python doesn't ignore whitespace.

As @MaciejGol notes in the comments you can assign to p like this to chain with whitespace:

p = (
   Person().setName('Hunter')
           .setAge(24)
           .setSSN('111-22-3333')
)

Whether or not this is the best style/idea for Python I can't say, but this is sort of how it would look in Java.