title: A good practice to implement with python multiple inheritance class?
body: <h3>The Scenario:</h3>
  <pre><code>class A:
      def __init__(self, key, secret):
          self.key = key
          self.secret = secret
      def same_name_method(self):
          do_some_staff
      def method_a(self):
          pass
  
  class B:
      def __init__(self, key, secret):
          self.key = key
          self.secret = secret
      def same_name_method(self):
          do_another_staff
      def method_b(self):
          pass
  
  class C(A,B):
      def __init__(self, *args, **kwargs):
      # I want to init both class A and B's key and secret
      ## I want to rename class A and B's same method 
          any_ideas()
      ...
  </code></pre>
  <h3>What I Want:</h3>
  <ol>
  <li>I want the instance of class C initialize both class A and B, because they are different api key.</li>
  <li>And I want rename class A and B's same_name_method, so I will not confused at which same_name_method.</li>
  </ol>
  <h3>What I Have Done:</h3>
  <p>For problem one, I have done this:</p>
  <pre><code>class C(A,B):
      def __init__(self, *args, **kwargs):
          A.__init__(self, a_api_key,a_api_secret)
          B.__init__(self, b_api_key,b_api_secret)
  </code></pre>
  <p>Comment: I know about super(), but for this situation I do not know how to use it.</p>
  <p>For problem two, I add a <code>__new__</code> for class C</p>
  <pre><code>def __new__(cls, *args, **kwargs):
      cls.platforms = []
      cls.rename_method = []
  
      for platform in cls.__bases__:
          # fetch platform module name
          module_name = platform.__module__.split('.')[0]
          cls.platforms.append(module_name)
          # rename attr
          for k, v in platform.__dict__.items():
              if not k.startswith('__'):
                  setattr(cls, module_name+'_'+k, v)
                  cls.rename_method.append(k)
      
      for i in cls.rename_method:
          delattr(cls, i)   ## this line will raise AttributeError!!
      return super().__new__(cls)
  </code></pre>
  <p>Comment: because I rename the new method names and add it to cls attr. I need to delete the old method attr, but do not know how to delattr. Now I just leave them alone, did not delete the old methods.</p>
  <h3>Question:</h3>
  <p>Any Suggestions?</p>