【发布时间】:2011-08-21 08:22:05
【问题描述】:
我有来自 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 字节码或使用模板/宏来更改源文件本身?
【问题讨论】:
标签: python constructor code-generation data-members