擅长:python、mysql、java
<p>如果您将来有类似的(可能是现代化的)类,例如<code>IAPWS_2014</code>),那么考虑使用classmethod而不是staticmethod是有意义的:</p>
<pre><code>class IAPWS_1995(object):
n_3 = 123
... # further class data
@classmethod
def dAr_ddelta(c, delta, tau, Delta, theta, psi):
_dAr_ddelta = \
sum(c.n_0 * c.d_0 * pow(delta, c.d_0-1) * pow(tau, c.t_0)) + \
sum(c.n_1 * exp(-pow(delta, c.c_1)) * (pow(delta, c.d_1-1) * pow(tau, c.t_1) * (c.d_1 - c.c_1*pow(delta, c.c_1)))) + \
sum(c.n_2 * pow(delta, c.d_2)*pow(tau, c.t_2) * exp(-c.alpha_2*(delta-c.epsilon_2)**2 - c.beta_2*(tau-c.gamma_2)**2) * (c.d_2/delta - 2*c.alpha_2*(delta-c.epsilon_2))) + \
sum(c.n_3 * (pow(Delta, c.b_3)*(psi + delta*c.dpsi_ddelta(psi, delta)) + c.dDeltab_ddelta(delta, Delta, theta)*delta*psi))
return _dAr_ddelta
</code></pre>
<p>这样,这个类的新版本就可以继承旧版本,并且只覆盖实际更改过的变量。如果计算结果发生了变化,则不得重新执行:</p>
^{pr2}$
<p>关于您最初的问题,一个更好的副作用是,您可以随意为类命名参数。<code>cls</code>可能是典型的(根据PEP8,它是canon),但是{<cd3>}也可以工作,并将代码缩写为您的<code>_</code>版本。在</p>