title: How works the method __repr__ of xlwings 's class Apps when it uses repr(list(self))
body: <p>I trying to make a new class and I found a similar class in the module xlwings, but I can't understand how works the method <strong>repr</strong> when it calls to self ("repr(list(self)). How the class knows return a list with the apss ?</p>
  
  <p>The code is:</p>
  
  <pre><code>class Apps(object):    
      def __init__(self, impl):
          self.impl = impl
  
      def __call__(self, i):
          return self[i-1]
  
      def __repr__(self):
          return '{}({})'.format(
              self.__class__.__name__,
              repr(list(self))
          )
  
      def __getitem__(self, item):
          return App(impl=self.impl[item])
  
      def __len__(self):
          return len(self.impl)
  
      def __iter__(self):
          for app in self.impl:
              yield App(impl=app)
  </code></pre>