Python - Как заменить логическое значение, если оно меньше определенного числа? - PullRequest
1 голос
/ 21 мая 2019

Работаю над созданием своих собственных объектов и классов и пытаюсь написать метод, который будет проверять число у объекта и, если будет найдено, что он меньше 50, он заменит логическое значение для другого объекта, который предварительноопределенное значение False.

В настоящее время у меня есть оператор if / else, который проверяет, является ли значение меньше 50 для gamePrice, и если это так, ему следует изменить значение для 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

1 Ответ

1 голос
/ 21 мая 2019

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