вызвать функцию без скобок в Python - PullRequest
0 голосов
/ 08 ноября 2018

Какую модификацию мне нужно сделать в приведенной ниже функции 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 голосов
/ 08 ноября 2018

Вы можете добавить магическую функцию:

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

>>> a = [5,8,9,22,2]
>>> c = Difference1(a)
>>> print(c)
20
0 голосов
/ 08 ноября 2018

Сделать свойство

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

print(c.computeDifference)

Однако я бы поменял имя на разница . Идея свойства заключается в том, что вы не должны знать или заботиться о том, вычисляется ли значение в это время или сохраняется как атрибут объекта. См. принцип унифицированного доступа .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...