Как вернуть целое число из функции класса от определенного числа до определенного числа

#python

#python

Вопрос:

Довольно новичок в Python здесь, я работал с классами, пока не наткнулся на создание функции в классе, особенно со временем, которая позволяет ей возвращать целочисленное значение от 0 до 24, но не включая, указывающее ближайший час ко времени начала события.

Это код, который у меня есть до сих пор:

 def get_time(self):
    """(int) Returns the integer time value"""
    for self._time in range(0, 24):
        return str(self._time)
 

Я не уверен, должен ли я заранее установить пустой список, чтобы я мог ссылаться на индекс, но, думаю, я застрял на данный момент… когда я его тестирую, это то, что он должен выводить, но это то, что выводит мой код:

  - Event(My Event @ 0, True, False)
    ?               ^
      Event(My Event @ 13, True, False)
    ?                  ^^
 :: __str__
 

Комментарии:

1. Ваш get_time метод не имеет смысла. Он пытается выполнить цикл, который устанавливает атрибут self._time для каждого значения от 0 до 23, но возвращается str(self._time) на первой итерации, поэтому ваш self._time всегда устанавливается равным нулю, и метод всегда возвращается '0' . Что бы вы ни хотели сделать, это не способ сделать это.

Ответ №1:

Возврат в вашей функции приведет к завершению цикла for на его первой итерации, поэтому вы каждый раз возвращаете 0. Также немного вводит в заблуждение то, что в вашем комментарии указано, что функция вернет целое число, даже если оно возвращает строку. Я предполагаю, что вы где-то установили self._time и хотите вернуть час? Является ли self._time объектом datetime? Если это так, вы можете вернуть self._time.hour , поэтому ваша функция будет

 def get_time(self):
    """(int) Returns the integer time value"""
    return int(self._time.hour)