简体   繁体   中英

call function without parenthesis in python

what modification i would need to do in the below function computeDifference to get result printed in the console, instead of object message.

i know i need to add parenthesis () to call function to get the result printed in the console, but is there any other way to print the result?

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)

Make it a property

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

print(c.computeDifference)

However, I would change the name to difference . The idea of a property is that you shouldn't know or care whether the value is computed at that time or is stored as an attribute of the object. See uniform access principle .

You could add a magic function:

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM