title: Using __getattribute__ or __getattr__ to call methods in Python
body: <p>I am trying to create a subclass which acts as a list of custom classes. However, I want the list to inherit the methods and attributes of the parent class and return a sum of the quantities of each item. I am attempting to do this using the <code>__getattribute__</code> method, but I cannot figure out how to pass arguments to callable attributes. The highly simplified code below should explain more clearly. </p>
  
  <pre><code>class Product:
      def __init__(self,price,quantity):
          self.price=price
          self.quantity=quantity
      def get_total_price(self,tax_rate):
          return self.price*self.quantity*(1+tax_rate)
  
  class Package(Product,list):
      def __init__(self,*args):
          list.__init__(self,args)
      def __getattribute__(self,*args):
          name = args[0]
      # the only argument passed is the name...
          if name in dir(self[0]):
              tot = 0
              for product in self:
                  tot += getattr(product,name)#(need some way to pass the argument)
              return sum
          else:
              list.__getattribute__(self,*args)
  
  p1 = Product(2,4)
  p2 = Product(1,6)
  
  print p1.get_total_price(0.1) # returns 8.8
  print p2.get_total_price(0.1) # returns 6.6
  
  pkg = Package(p1,p2)
  print pkg.get_total_price(0.1) #desired output is 15.4.
  </code></pre>
  
  <p>In reality I have many methods of the parent class which must be callable. I realize that I could manually override each one for the list-like subclass, but I would like to avoid that since more methods may be added to the parent class in the future and I would like a dynamic system. Any advice or suggestions is appreciated. Thanks!</p>