Работаю над созданием своих собственных объектов и классов, и я пытаюсь написать метод, который будет проверять число из объекта, и если окажется, что оно меньше 50, он заменит логическое значение для другого объекта, который имеет предопределенное значение Ложь.
В настоящее время у меня есть оператор if/else, который проверяет, меньше ли значение для gamePrice 50, и если это так, он должен изменить значение для isASteal на True. Если больше 50, оно должно измениться на False. Значение по умолчанию для isASteal установлено как False, а значение по умолчанию для gamePrice равно 0.
class videoGames(object):
def __init__(self, gameName = '', gamePrice = 0, isASteal = False):
self.gameName = gameName
self.gamePrice = gamePrice
self.isASteal = isASteal
def gameValue(self):
if self.gamePrice == 0 or self.gamePrice >= 50:
self.isASteal = False
else:
self.isASteal = True
fullGames = 'Title:{}\t\ Price: ${}\t\ Steal: {}'.format(self.gameName, self.gamePrice, self.isASteal)
return fullGames
Если пользователь вызывает функцию, говоря:
game1 = videoGames('Call of Duty', 15)
они должны получить вывод, похожий на этот:
Title: Call of Duty Price: $15 Steal: True
вместо этого я получаю:
Title: Call of Duty Price: $15 Steal: False
У вас не должно быть кода в классе, которого нет в методе. Пожалуйста, проверьте отступ.
@DeveshKumarSingh это не работает
Вы делаете print(game1.gameValue())
? Я получаю результат Title:Call of Duty \ Price: $15 \ Steal: True
нет, я делаю print(game1)
Вам нужно вызвать функцию в экземпляре, а не вызывать сам экземпляр класса
@DeveshKumarSingh, как я могу получить это, чтобы мне не приходилось вызывать функцию экземпляра? и просто вызвать экземпляр класса, который будет включать функцию экземпляра?
Вы можете переопределить для него метод __str__()
dunder @LordQuackingStick. Проверьте мой ответ ниже :)
Вау, спасибо большое! возможно ли иметь более одного метода __str__() dunder?
К сожалению, нет только одного метода dunder на класс!
Если вы хотите напечатать строку при вызове экземпляра, вы можете переопределить метод dunder __str__()
класса
class videoGames(object):
def __init__(self, gameName = '', gamePrice = 0, isASteal = False):
self.gameName = gameName
self.gamePrice = gamePrice
self.isASteal = isASteal
#Overriden ___str__ method
def __str__(self):
if self.gamePrice == 0 or self.gamePrice >= 50:
self.isASteal = False
else:
self.isASteal = True
fullGames = 'Title:{}\t\ Price: ${}\t\ Steal: {}'.format(self.gameName, self.gamePrice, self.isASteal)
return fullGames
game1 = videoGames('Call of Duty', 15)
print(game1)
Результат будет
Title:Call of Duty Price: $15 Steal: True
Я запустил ваш код и получил правильный ответ, можете ли вы проверить вопрос еще раз