收到以下错误:TypeError:需要浮点参数,而不是实例

时间:2017-11-01 01:28:01

标签: python-2.7 python-3.x

我正在实施一个大圆圈类,它执行计算区域等操作,比较两个圆圈,比较一个圆圈和方形等,但我遇到了这个小片段的问题。

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,因为我以后使用它(这里没有显示代码)来比较两个圆圈的区域作为参数发送。请帮助。

1 个答案:

答案 0 :(得分:0)

删除字符串格式的第一个参数:

print("\nArea of  first circle is %0.6f" % (first_circle.area()))

我不确定你为什么把first_circle作为参数,因为%0.6f是需要参数的字符串的唯一部分。

<小时/> 您还需要重命名self.area或重命名方法area(),因为如果它们具有相同的名称会导致冲突。