title: Automatically-generated Python constructor
body: <p>I have countless Python classes from various projects from SQLAlchemy (and a couple from Pygame as well), and I recently noticed a pattern in many of them: their constructors always went something like this:</p>
  
  <pre><code>class Foo(Base):
      def __init__(self, first, last, email, mi=""):
          self.first = first
          self.last = last
          self.email = email
          self.mi = mi
  </code></pre>
  
  <p>... whereby the only thing the constructor did was to transfer a set of positional arguments into an exactly identically named set of data members, performing no calculation or other function calls whatsoever.</p>
  
  <p>It seems to me that this repetition is unnecessary and prone to human error upon change.</p>
  
  <p>This leads me to the question here: is it possible to automatically generate such an <code>__init__(self, ...)</code> function, preferably without mucking around with CPython bytecode or using templates/macros to alter the source file itself?</p>