我有来自 SQLAlchemy 的各种项目的无数 Python 类(以及来自 Pygame 的几个),我最近注意到其中的一个模式:它们的构造函数总是这样的:
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 字节码或使用模板/宏来更改源文件本身?