我声明了一个类,该类使用定义为类属性的几个硬编码常量进行一些计算。所有方法看起来都类似于以下内容:
class IAPWS_1995:
@staticmethod
def dAr_ddelta(delta, tau, Delta, theta, psi):
_dAr_ddelta = \
sum(IAPWS_1995.n_0 * IAPWS_1995.d_0 * pow(delta, IAPWS_1995.d_0-1) * pow(tau, IAPWS_1995.t_0)) + \
sum(IAPWS_1995.n_1 * exp(-pow(delta, IAPWS_1995.c_1)) * (pow(delta, IAPWS_1995.d_1-1) * pow(tau, IAPWS_1995.t_1) * (IAPWS_1995.d_1 - IAPWS_1995.c_1*pow(delta, IAPWS_1995.c_1)))) + \
sum(IAPWS_1995.n_2 * pow(delta, IAPWS_1995.d_2)*pow(tau, IAPWS_1995.t_2) * exp(-IAPWS_1995.alpha_2*(delta-IAPWS_1995.epsilon_2)**2 - IAPWS_1995.beta_2*(tau-IAPWS_1995.gamma_2)**2) * (IAPWS_1995.d_2/delta - 2*IAPWS_1995.alpha_2*(delta-IAPWS_1995.epsilon_2))) + \
sum(IAPWS_1995.n_3 * (pow(Delta, IAPWS_1995.b_3)*(psi + delta*IAPWS_1995.dpsi_ddelta(psi, delta)) + IAPWS_1995.dDeltab_ddelta(delta, Delta, theta)*delta*psi))
return _dAr_ddelta
类范围限定符使代码(甚至更)难以阅读。我曾想过做这样的事情来使代码更具可读性:
...
_ = IAPWS_1995
_dAr_ddelta = \
sum(_.n_0 * _.d_0 * pow(delta, _.d_0-1) * pow(tau, _.t_0)) + \
...
但是,如果我将常量声明移至模块范围,则根本不需要范围限定符。
是否有理由更喜欢在模块中声明类中的常量(例如,如果我IAPWS_2014
将来有类似的类,命名空间冲突?)