I am learning about OOP so it would be great if you can give me feedback on how to improve my code and OOP design.
This is a currency converter. Firstly, it will call a method to add 2 currencies and commission information and then it converts to another currency whose input is source currency and amount:
import pytest
class Bank:
def addRate(self,first, second, rate):
self.first_currency = first
self.second_currency = second
self.rate = rate
def addCommission(self,commision):
self.commission = commision
def convert(self, currency, amount):
if currency == self.first_currency:
return (amount / self.rate) * (1-self.commission)
else:
return (amount * self.rate) * (1-self.commission)
@pytest.fixture()
def bank():
return Bank()
def test_Bank_addRate(bank):
bank.addRate("USD","GBP",2)
assert bank.first_currency == "USD"
assert bank.second_currency == "GBP"
assert bank.rate == 2
def test_Bank_addCommision(bank):
bank.addCommission(0.015)
assert bank.commission == 0.015
def test_Bank_convert(bank):
bank.addRate("USD", "GBP", 2)
bank.addCommission(0.015)
assert bank.convert("USD", 100) == 49.25
Currency
class but it doesn’t seem to be using it — what is its purpose? \$\endgroup\$