Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python3: TypeError: 'int' object is not callable [duplicate]

Python3: TypeError: 'int' object is not callable, is it because the way I called the method .area() is wrong? Or is it because the way I def the .area() is wrong? Thank you

class Rectangle: 
    def __init__ (self):
        self.height = 0
        self.width = 0
        self.area = 0

    def setData(self, height, width):
        self.height = height
        self.width = width

    def area(self, height, width):
        self.area = height * width

    def __str__(self):
        return "height = %i, width = %i" % (self.height, self.width)
        return "area = %i" % self.area

if __name__ == "__main__":
    r1 = Rectangle()
    print (r1)
    r1.setData(3,4)
    print (r1)

Here I call .area(), I think what's where the problem comes from:

    r1.area(3,4)
    print (r1)
like image 374
Shengjing Avatar asked Sep 26 '26 04:09

Shengjing


1 Answers

It's because you first defined a variable area (an integer to be specific) as an attribute of your class Rectangle, and later a function area().

This inconsistency causes confusion so the Python interpreter tries to call the interger as a function which fails. Just rename one of the integer variable (self.area = ...) or the function (def area(...)), and everything should work fine.

Hope this helps!

like image 85
linusg Avatar answered Sep 28 '26 14:09

linusg



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!