为什么我的函数即使有返回语句,每次调用时都返回None

时间:2018-12-13 07:22:46

标签: python python-3.x function class return

我正在用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))

但是,当我运行它时,最后一个打印语句将打印None。但是,如果我将return中的displayTime更改为print,它将正确打印时间。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

{{1}}

答案 1 :(得分:1)

发布答案后,我便得到答案。为了将来供他人参考,我将答案发布在这里。

在函数addTime中,我调用了函数displayTime

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

函数displayTime将值返回给函数addTime,而addTime不返回任何值。因此,它将打印None

要纠正它,我只需要返回displayTime

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