【发布时间】:2013-11-30 00:36:22
【问题描述】:
我有两个文件:
class Account:
def __init__(self,id=0,balance=100.0,AIR=0.0):
self.__id = id
self.__balance = balance
self.__AIR = AIR
def getd(self):
return self.__id
def getbalance(self):
return self.__balance
def getAnnualInterest(self):
return self.__AIR
def setid(self,newid):
self.__id = newid
def setbalance(self,newbalance):
self.__balance = newbalance
def setAnnualInterestRate(self,newrate):
self.__AIR = newrate
def getMonthlyInterestRate(self):
return self.__AIR/12
def getMonthlyInterest(self):
return self.__balance*self.getMonthlyInterestRate()
def withdraw(self,amount):
if amount<=self.__balance:
self.__balance -= amount
def deposit(self,amount):
self.__balance += amount
def __str__(self):
return "Account ID : {0.setid} Account Balance : {0.setbalance} Annual Interest Rate : {0.setAnnualInterestRate}".format(self)
和测试:
from Account import Account
def main():
accountA = Account(0,100,0)
accountA.setid = 1234
accountA.setbalance = 20500
accountA.setAnnualInterestRate = 0.375
print(accountA)
accountA.withdraw(500)
accountA.deposit(1500)
print(accountA)
print(accountA.getMonthlyInterest())
main()
我的输出大部分是正确的,但有两个小细节我弄错了,我不确定问题出在代码的哪里。
账户 ID:1234 账户余额:20500 年利率:0.375 账户 ID:1234 账户余额:20500(这应该是 21500) 年利率:0.375 0.0(这应该是 671.875 但不知何故我弄错了)
【问题讨论】:
-
self.__balance 不会随着存款和取款的调用而改变。我自己是 python 新手,所以我不确定类中的变量,但这似乎是问题所在。
-
为什么你的字符串格式调用setter方法(setid,setbalance...)
-
self.getbalance() 产生正确的结果。