TypeError:必须是实数,而不是Circle

时间:2018-06-30 08:23:39

标签: python class object typeerror

import math as m
class Circle:
        def __init__(self,radius):
            self.radius = radius
            count = 0
        def area(r):
            k = m.pi * m.pow(r,2)
            return k

我不确定上面的代码有什么问题,但是当我尝试像下面这样执行时

a = Circle(4)
a.area()
it throws an error like 
"   k = m.pi * m.pow(r,2)
TypeError: must be real number, not Circle"

无法理解它如何将float值视为圆的实例。

2 个答案:

答案 0 :(得分:4)

实例方法的第一个参数是对实例本身的引用(通常称为self),这就是Circe的来源。您不应该传递半径,而应该使用拥有的成员:

def area(self):
    k = m.pi * m.pow(self.radius, 2)
    return k

答案 1 :(得分:1)

import math as m
DEFAULT_RADIUS = 0.5
class Circle(object):
    def __init__(self, radius=DEFAULT_RADIUS):
        self.radius = radius
        count = 0
    def area(self, r=None):
        if r is not None:
            self.radius = r
        k = m.pi * m.pow(self.radius, 2)
        return k
a = Circle(4)
a.area()