Как сделать проверку переменной по классу?

Код:

speed = 0

class Novice():
    def __init__(self, first_speed, last_speed):
        self.first_speed = first_speed
        self.last_speed = last_speed

novice = Novice(0, 99)

if speed == novice:
    print('You are Novice!')
else:
    pass

Значит, мне нужно, чтоб когда переменная speed равнялась от 0 до 99 писалось в консоль: You are Novice!. А если меньше то ничего, т.е. pass. Как это сделать?


Ответы (3 шт):

Автор решения: S. Nick

попробуйте так:

speed = 0

class Novice():
    def __init__(self, first_speed, last_speed):
        self.first_speed = first_speed
        self.last_speed = last_speed

novice = Novice(0, 99)

if speed >= novice.first_speed and speed < novice.last_speed:
    print('You are Novice!')
else:
    pass
→ Ссылка
Автор решения: mrEvgenX

Как вариант (скорее антипример), вроде работает:

speed = 0

class Novice():
    def __init__(self, first_speed, last_speed):
        self.first_speed = first_speed
        self.last_speed = last_speed
    
    def __eq__(self, obj):
        return self.first_speed <= obj <= self.last_speed

novice = Novice(0, 99)

if speed == novice:
    print('You are Novice!')
else:
    pass

Но чисто субъективно, я бы убедительно не советовал использовать это в чем-то серьезном. Когда проект разрастется - вы замучаетесь отлаживать возможные возникающие ошибки.

Соседний ответ от @S. Nick получше будет в этом смысле.

→ Ссылка
Автор решения: Andy Pavlov

Учитывая, что у нас класс со скоростями, логично сделать метод оценки скорости:

class Novice:

    def __init__(self, first_speed, last_speed):
        self.first_speed = first_speed
        self.last_speed = last_speed

    def check_speed(self, speed):
        return self.first_speed <= speed <= self.last_speed


speed = 0
novice = Novice(0, 99)
if novice.check_speed(speed):
    print('You are Novice!')

Либо принт сразу в check_speed() перенести.

→ Ссылка