У меня есть два файла:Ошибки в мелких деталях в выходе класса
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()
Мой выход в основном правильно, но есть два небольших deatils, которые я получил неправильно и Я не уверен, где в коде проблема.
ID счета: 1234 Баланс счета: 20500 Годовая процентная ставка: 0,375 ID счета: 1234 Баланс счета: 20500 (Это должно быть 21500) Годовая процентная ставка: 0,375 0,0 (И это, как предполагается, быть 671,875, но почему-то я получил это неправильно)
сам .__ баланс не меняется, так как депозит и снятие вызывают. Я новичок в python, поэтому я не уверен в переменных в классах, но, похоже, проблема возникает. – fuesika
Почему ваш строковый формат вызывает методы настройки (setid, setbalance ...) – Hacketo
self.getbalance() дает правильные результаты. – fuesika