Python3:TypeError: 'int' object is not callable
,是因为我调用方法.area()
的方式错了吗?或者是因为我确定.area()
的方式是错误的?谢谢
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)
我在此致电.area()
,我想问题来自哪里:
r1.area(3,4)
print (r1)
答案 0 :(得分:6)
这是因为您首先将变量area
(一个特定的整数)定义为类Rectangle
的属性,后来定义为函数area()
。
这种不一致会导致混淆,因此Python解释器会尝试将整数调用为失败的函数。只需重命名整数变量(self.area = ...
)或函数(def area(...)
)之一,一切都应该正常。
希望这有帮助!
答案 1 :(得分:2)
area
方法与__str__
字段之间存在名称冲突。看起来你根本不需要区域。并且不使用区域函数的参数。而且你也有两个class Rectangle:
def __init__ (self):
self.height = 0
self.width = 0
def setData(self, height, width):
self.height = height
self.width = width
def __str__(self):
return "height = %i, width = %i" % (self.height, self.width)
def area(self):
return self.height * self.width
if __name__ == "__main__":
r1 = Rectangle()
print (r1)
r1.setData(3,4)
print (r1)
print ("area = ", r1.area())
函数。我试图解决它:
{{1}}
答案 2 :(得分:1)
def area(self, height, width):
self.area = self.height * self.width
您正在定义方法area
,并在方法中使用int
覆盖它。