title: Overload [] python operator and chaining methods using a memory reference
body: <p>Is it possible to overload <code>[] (__getitem__)</code> Python operator and chain methods using the initial memory reference.</p>
  
  <p>Imagine I have a class <code>Math</code> that accepts a list of integer numbers, like this:</p>
  
  <pre><code>class Math(object):
      def __init__(self, *args, **kwargs):
          assert(all([isinstance(item, int) for item in list(args)]))
          self.list = list(args)
  
      def add_one(self):
          for index in range(len(self.list)):
              self.list[index] += 1
  </code></pre>
  
  <p>And I want to do something like this:</p>
  
  <pre><code>instance = Math(1,2,3,4,5)
  instance[2:4].add_one()
  </code></pre>
  
  <p>After executing this code <code>instance.list</code> should be <code>[1,2,4,5,5]</code>, is this possible?</p>
  
  <p>I know I could do something like <code>add_one(2,4)</code>, but this is not the style of API I would like to have if possible.</p>
  
  <p>Thanks</p>