我正在实施一个大圆圈类,它执行计算区域等操作,比较两个圆圈,比较一个圆圈和方形等,但我遇到了这个小片段的问题。
class Circle(Point):
def __init__(self, x=0, y=0, r=0):
self.X = x
self.Y = y
self.R = r
self.area = math.pi*r*r
def __str__(self):
return ("A Circle which has centre at " + "(" + "%0.6f" % (self.X) + ", "
+ "%0.6f" % (self.Y) + ")" + "and its radius " + "%0.6f" % (self.R))
def getX(self):
return self.X
def getY(self):
return self.Y
def getR(self):
return self.R
def setR(self):
pass
def area(self):
return math.pi * self.R * self.R
def main():
x = float(input("Enter x coordinate of first circle's centre: "))
y = float(input("Enter y coordinate of the first circle's centre: "))
r = float(input("Enter first circle's radius: "))
pointx1 = x
pointy1 = y
radius1 = r
first_circle = Circle(x, y, r)
print(first_circle)
print("\nArea of first circle is %0.6f" % (first_circle, first_circle.area())
main()
但是,执行以下代码时出现以下错误:
print("\nArea of first circle is %0.6f" % (first_circle, first_circle.area))
TypeError: float argument required, not instance
我如何摆脱这个。我已经在构造函数中计算了self.area,因为我以后使用它(这里没有显示代码)来比较两个圆圈的区域作为参数发送。请帮助。
答案 0 :(得分:0)
删除字符串格式的第一个参数:
print("\nArea of first circle is %0.6f" % (first_circle.area()))
我不确定你为什么把first_circle
作为参数,因为%0.6f
是需要参数的字符串的唯一部分。
<小时/> 您还需要重命名
self.area
或重命名方法area()
,因为如果它们具有相同的名称会导致冲突。