为什么在python类中使用@staticmethod装饰器引用方法时,我们需要self?

问题描述 投票:0回答:1

我不明白为什么用@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
python static
1个回答
0
投票

如果不带circle_area()调用self,则您的Python解释器将尝试查找具有全局范围的方法的名称。但是方法circle_area在类Pizza中定义,在全局范围内不可见,因此解释器无法访问它。通过将self添加到您的方法调用中,可以指定要调用的方法所在的位置。

© www.soinside.com 2019 - 2024. All rights reserved.