method chains logo method chains: chains

1 2 3 4 5 6 7 8 9
Notes

This is the class that we had before.

class Clumper:
    def __init__(self, blob):
        self.blob = blob

    def keep(self, func):
        return [d for d in self.blob if func(d)]

This is the class that we have now.

class Clumper:
    def __init__(self, blob):
        self.blob = blob

    def keep(self, func):
        return Clumper([d for d in self.blob if func(d)])

You'll note that we can now chain commands together.

(Clumper(poke_dict)
  .keep(lambda d: 'Grass' in d['type'])
  .keep(lambda d: d['hp'] < 60)
  .blob)

There's an improvement that we could make now though.