如何正确处理类的属性变化?

2024-06-28 19:44:39 发布

您现在位置:Python中文网/ 问答频道 /正文

下面有一个类,其中一个方法更改了它的属性。但是,我需要原始不变的财产。做这件事的惯用方法是什么

这个类描述一个借贷者。借款人有一处叫做PMT的房产。这是借款人的摊余价值。它是根据现值计算出来的。然而,借款人有一种适用利息的方法。这会改变现值,进而改变PMT。我需要原始付款后,我申请了兴趣。最好的解决办法是什么。 这是代码的示例

import numpy as np

class Borrower:
    def __init__(self, present_value, term, rate):
        self.present_value = present_value
        self.term = term
        self.rate = rate

    def pmt(self):
        return -np.pmt(self.rate/12, self.term, self.present_value)

    def apply_interest(self):
        self.present_value *= 1 + self.rate

问题是:

b = Borrower(1000, 12, 0.1)
b.pmt()  # 87.91
b.apply_interest()
b.pmt()  # 96.70  I need 87.91 here!

我是否应该创建一个初始付款方式如下的借款人

class Borrower:
    def __init__(self, present_value, term, rate):
        self.present_value = present_value
        self.term = term
        self.rate = rate
        self.init_pmt = self.pmt()

Tags: 方法selfrateinitvaluedefnpclass