#python #oop
Вопрос:
Я новичок в программировании и только начал свой курс программирования. Мы рассматриваем ООП, и я борюсь с банковским проектом.
В принципе, нам были предоставлены тестовые примеры, чтобы проверить, правильно ли работает наш код. Нам придется написать свои собственные тестовые примеры для второй части проекта.
Моя текущая проблема с данными тестовыми случаями заключается в том, что я не могу пройти один из последних тестов, который проверяет успешный метод передачи.
Я написал свой метод перевода, протестировал его в своем модуле банковского счета и, похоже, делаю то, что ожидается: снимаю деньги со счета 1 и перемещаю их на счет2. Тем не менее, тестовый случай все еще не удался.
Насколько я могу видеть, в тестовом примере рассматриваются следующие 3 условия: баланс счета на снятом счете, баланс счета на внесенном счете и переведенная сумма.
Есть идеи, не упускаю ли я здесь чего-нибудь?
Ниже приведены мои способы внесения депозита и перевода
#Method to process money deposits. Receives deposit_amount variable (float) and return class variable account_balance incremented by deposit amount
def deposit (self,deposit_amount):
self.account_balance = deposit_amount
#Method to make money transfers. Receives account (obj) and amount_transferred (float) arguments. Returns amount of money transferred if
#enough funds, otherwise returns None
def transfer (self, account, amount):
if amount > 0 and amount <= account.account_balance:
self.account_balance -= amount
account.deposit(amount)
else:
return None
Теперь ниже приведен тестовый пример для проверки успешной передачи
# Test BANK_ACCOUNT_TEST_7: Tests transfer method for success.
amount_transferred = account_1.transfer(account_2, 20.0)
if account_1.get_balance() != 40.65 or account_2.get_balance() != 50.0 or amount_transferred != 20.0:
print('FAILED BANK_ACCOUNT_TEST_7')
return 7
Я провел несколько испытаний и все еще получаю НЕУДАЧНЫЙ BANK_ACCOUNT_TEST_7.
Комментарии:
1. Когда вы пишете:
amount_transferred = account_1.transfer(account_2, 20.0)
кажется, что вы ожидаетеtransfer()
вернуть переведенную сумму, но это не так.2. Лучший банк Я готов открыть в нем новый счет и попрошу других совершить транзакцию .. этот банк для богатых людей, он всегда будет терпеть неудачу, если на моем счете меньше суммы, Безумный банк XD никто не может дать мне денег. 😂
3. ваша сумма, если условие неверно, соответствует сумме
Ответ №1:
Проверьте свою логику передачи .. См. Обновленную логику .. Предложение: Попробуйте использовать метод getter setter вместо прямого использования объектной переменной. (не использовал геттер-сеттер в текущем soln.)
def transfer (self, account, amount):
if amount > 0 and amount <= self.account_balance:
self.account_balance -= amount
account.deposit(amount)
return amount
else:
return None
Комментарии:
1. Большое спасибо! У меня было много проблем, пытаясь понять в рамках метода, когда использовать self.account_balance и когда использовать account.account_balance. Я знаю, что это может показаться глупым, но мне трудно понять эти 2 концепции и как их правильно использовать.
2. @CristianA : пример рассмотрим коробку, созданную фабрикой. Информация о коробке в этой коробке несколько полок … Теперь класс-это вся ваша информация о коробке, о том, как будет выглядеть коробка, о ее функциях ( например, о заводских машинах сборочной линии) {схема простого слова} . Теперь, когда вы создаете новый объект, это означает, что вы создали новую коробку с теми же функциями, которые нам велено создать. Как box может получить доступ к своим функциям с помощью self(простыми словами означает «мой/мой»). Когда вы используете self, вы говорите, что box может получить доступ ко всему, что ему принадлежит.(мое ) (игнорируйте грамматические ошибки)