我不明白为什么用@staticmethod装饰器引用该方法时为什么需要使用self。
例如,区域方法中的self.circle_area方法。
class Pizza:
def __init__(self, radius, ingredients):
self.radius = radius
self.ingredients = ingredients
def area(self):
return self.circle_area(self.radius)
@staticmethod
def circle_area(r):
return r ** 2 * math.pi
如果不带circle_area()
调用self
,则您的Python解释器将尝试查找具有全局范围的方法的名称。但是方法circle_area
在类Pizza
中定义,在全局范围内不可见,因此解释器无法访问它。通过将self
添加到您的方法调用中,可以指定要调用的方法所在的位置。