Python类方法与函数计算结果不一致的问题及解决
问题分析与解决办法
核心问题:参数顺序不匹配
类的calc_zcb方法定义为def calc_zcb(self, r0, t):,参数顺序是先r0再t,但你调用时写的是mld.calc_zcb(t, r0),把t和r0的传参顺序搞反了,导致计算逻辑完全错位,这就是结果差异的根源。修复方案
有两种方式可以解决:- 修正调用时的参数顺序,与类方法定义对应:
zcb = mld.calc_zcb(r0, t) - 调整类方法的参数顺序,和函数实现保持一致(推荐,降低后续维护的混淆风险):
def calc_zcb(self, t, r0): return np.exp(-self._calc_A(t) - self._calc_B(t) * r0)
- 修正调用时的参数顺序,与类方法定义对应:
验证效果
修复后重新运行代码,类方法和函数的计算结果会完全一致:[0.97995997 0.95991382 0.93995418 0.92015313] [0.97995997 0.95991382 0.93995418 0.92015313]
内容的提问来源于stack exchange,提问作者Landscape
相关产品推荐
相关产品推荐

