SQLAlchemyのさまざまなプロジェクト(およびPygameのいくつかのプロジェクト)からの無数のPythonクラスがあり、最近、それらの多くにパターンがあることに気づきました。それらのコンストラクターは常に次のようになりました。
class Foo(Base):
def __init__(self, first, last, email, mi=""):
self.first = first
self.last = last
self.email = email
self.mi = mi
...これにより、コンストラクターが行ったのは、位置引数のセットをまったく同じ名前のデータメンバーのセットに転送することだけで、計算やその他の関数呼び出しは一切実行しませんでした。
この繰り返しは不要であり、変更時に人為的ミスが発生しやすいように思われます。
これは私にここでの質問につながります:__init__(self, ...)
できればCPythonバイトコードをいじったり、テンプレート/マクロを使用してソースファイル自体を変更したりせずに、そのような関数を自動的に生成することは可能ですか?