Почему моя функция возвращает None каждый раз, когда она вызывается, хотя она имеет оператор return - PullRequest
0 голосов
/ 13 декабря 2018

Я изучаю классы на Python, и вот код, который я написал

class Time:
    def __init__(self, hour, minute):
        self.hour=hour
        self.minute=minute

    def displayTime(self):
        return f"{self.hour} hours and {self.minute} minutes" 

    def addTime(self, s):
        temp = Time(0,0)
        temp.minute = self.minute + s.minute
        temp.hour = self.hour + s.hour
        if temp.minute>=60:
            temp.hour+=1
            temp.minute-=60
        temp.displayTime()

if __name__=='__main__':
    t1= Time(12,50)
    t2 = Time(11,36)

    print(t1.displayTime())
    print(t2.displayTime())

    print(t1.addTime(t2))

Но когда я его запускаю, последний оператор print печатает None.Но если я изменю return в displayTime на print, он правильно напечатает время.

Что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Я получил ответ, как только отправил.Для будущей ссылки на других я публикую ответ здесь.

В функции addTime я вызвал функцию displayTime

def addTime(self, s):
    ...
   temp.displayTime()

Функция displayTime возвращает значение функцииaddTime, а addTime ничего не возвращает.Следовательно, он печатает None.

Чтобы исправить это, я просто должен вернуть displayTime

def addTime(self, s):
    ...
   return temp.displayTime()
0 голосов
/ 13 декабря 2018
def addTime(self, s):
    temp = Time(0,0)
    temp.minute = self.minute + s.minute
    temp.hour = self.hour + s.hour
    if temp.minute>=60:
        temp.hour+=1
        temp.minute-=60
    return temp.displayTime()  # <- this is the issue.
...