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值视为圆的实例。
答案 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()