python中没有括号的调用函数

时间:2018-11-08 10:12:42

标签: python oop

我需要在下面的函数computeDifference中进行哪些修改才能在控制台中打印结果,而不是对象消息。

我知道我需要在函数中添加括号()才能在控制台中打印出结果,但是还有其他方法可以打印结果吗?

class Difference1:
    def __init__(self, a):
        self.__elements = a

    def computeDifference(self):
        self.difference =  max(self.__elements)- min(self.__elements)
        return self.difference

a = [5,8,9,22,2]
c = Difference1(a)
print(c.computeDifference)

2 个答案:

答案 0 :(得分:5)

将其设为属性

class Difference1:
@property
def computeDifference(self):
   ...

print(c.computeDifference)

但是,我将名称更改为 difference 。属性的想法是,您不应该知道或关心该值是在那时计算还是作为对象的属性存储。参见uniform access principle

答案 1 :(得分:2)

您可以添加一个魔术功能:

class Difference1:
    ...
    def __str__(self):
        return self.computeDifference()
    ...

>>> a = [5,8,9,22,2]
>>> c = Difference1(a)
>>> print(c)
20
相关问题