我是新手,尝试通过QuantEcon.org讲座学习Python。在研究OOP III: The Samuelson Accelerator时,我注意到当一个类具有许多属性时,构造函数最终看起来像这样(被剔除):
ngOnDestroy
如您所见,有很多代码可以简单地将构造函数的参数复制到新对象的属性(class Samuelson():
def __init__(self,
y_0=100,
y_1=50,
α=1.3,
β=0.2,
γ=10,
n=100,
σ=0,
g=0,
g_t=0,
duration=None):
self.y_0, self.y_1, self.α, self.β = y_0, y_1, α, β
self.n, self.g, self.g_t, self.duration = n, g, g_t, duration
self.γ, self.σ = γ, σ
self.ρ1 = α + β
self.ρ2 = -β
self.roots = np.roots([1, -self.ρ1, -self.ρ2])
等;构造函数的前三行)。
为每个参数/属性重复本质上相同的样板代码会很麻烦(而且容易出错),尤其是在构造函数使用(明显)多于此参数的情况下。
因此,我的问题是:有没有更优雅的“ Pythonic”方式?