title: python metaclass pass __init__ params
body: <p>I'm learning metaclass programming in python 3, but I have some problems</p>
  
  <pre><code>class UpperAttrMetaClass(type): # to uppercase all attrs
      def __new__(mcs, class_name, class_parents, class_attr):
          attrs = ((name, value) for name, value in class_attr.items() if not 
              name.startswith('__'))
          uppercase_attrs = dict((name.upper(), value) for name, value in attrs)
          return super(UpperAttrMetaClass, mcs).__new__(mcs, class_name, 
                       class_parents, uppercase_attrs)
  
  class Base(metaclass=UpperAttrMetaClass):
      bar = 12
      def __init__(self, params):
          super(Base, self).__init__()
          self.params = params
  
  t = Base(1)
  print(t.BAR)
  print(t.params)
  </code></pre>
  
  <p>This code can uppercase all attrs.</p>
  
  <p>I want to pass a parameter to <strong>init</strong>, but when I run this code, I'm prompted to make a mistake that </p>
  
  <pre><code>TypeError: object() takes no parameters
  </code></pre>
  
  <p>How can I solve this problem?</p>