Python – как заменить логическое значение, если оно меньше определенного числа?

Работаю над созданием своих собственных объектов и классов, и я пытаюсь написать метод, который будет проверять число из объекта, и если окажется, что оно меньше 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

Я запустил ваш код и получил правильный ответ, можете ли вы проверить вопрос еще раз

Devesh Kumar Singh 21.05.2019 19:58

У вас не должно быть кода в классе, которого нет в методе. Пожалуйста, проверьте отступ.

Error - Syntactical Remorse 21.05.2019 20:03

@DeveshKumarSingh это не работает

LordQuackingStick 21.05.2019 20:09

Вы делаете print(game1.gameValue())? Я получаю результат Title:Call of Duty \ Price: $15 \ Steal: True

Devesh Kumar Singh 21.05.2019 20:11

нет, я делаю print(game1)

LordQuackingStick 21.05.2019 20:13

Вам нужно вызвать функцию в экземпляре, а не вызывать сам экземпляр класса

Devesh Kumar Singh 21.05.2019 20:17

@DeveshKumarSingh, как я могу получить это, чтобы мне не приходилось вызывать функцию экземпляра? и просто вызвать экземпляр класса, который будет включать функцию экземпляра?

LordQuackingStick 21.05.2019 20:25

Вы можете переопределить для него метод __str__() dunder @LordQuackingStick. Проверьте мой ответ ниже :)

Devesh Kumar Singh 21.05.2019 20:32

Вау, спасибо большое! возможно ли иметь более одного метода __str__() dunder?

LordQuackingStick 21.05.2019 20:42

К сожалению, нет только одного метода dunder на класс!

Devesh Kumar Singh 21.05.2019 20:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
10
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите напечатать строку при вызове экземпляра, вы можете переопределить метод 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

Другие вопросы по теме