面向对象 - 返回一个值

时间:2014-04-02 11:43:46

标签: python

class Duration(object):
    def __init__(self, minutes, seconds):
        self.minutes = minutes
        self.seconds = seconds

    def get_minutes(self):
        return self.minutes
    def get_seconds(self):
        return self.seconds
    def total_seconds(self):  #This part is wrong 
        return 60*(self.get_minutes()) + self.get_seconds()

这是我的代码。

我想要找到(Duration(3, 30)).total_seconds)给我210的总秒数,但现在我得到<bound method Duration.total_seconds of <__main__.Duration object at 0x0211AD90>>了 我如何获得210

3 个答案:

答案 0 :(得分:1)

您没有任何问题,只需要调用该方法而不是获取它:

>>> print((Duration(3, 30)).total_seconds())
210

注意total_seconds()而非total_seconds 当你在没有()的情况下调用它时,python返回方法实例但不调用它。

答案 1 :(得分:0)

这应该是

print((Duration(3, 30)).total_seconds())
                                     ^^

在python中,函数是对象,可以打印。这就是你所看到的。

答案 2 :(得分:0)

如果您希望能够跳过括号,请将total_seconds设为property

@property
def total_seconds(self):

现在它完全符合您的要求:

>>> Duration(3, 30).total_seconds
210