Зачем нам нужно self, когда ссылается на метод с декоратором @staticmethod в классе python? - PullRequest
0 голосов
/ 07 ноября 2019

Я не понимаю, почему мы должны использовать self, когда мы ссылаемся на метод с @staticmethod декоратором.

Например, метод self.circle_area в методе 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

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Ты не. self и Pizza относятся к одной и той же вещи (вы могли бы сделать self.circle_area(self.radius)). Однако self чаще используется соглашением.

Если вы позвоните surface_area() без self или pizza, вы получите ошибку, потому что surface_area() не определен в глобальной области видимости.

0 голосов
/ 07 ноября 2019

Если вы вызываете circle_area() без self, ваш интерпретатор Python попытается найти имя метода с глобальной областью действия. Но метод circle_area определен в классе Pizza, который не виден в глобальной области видимости, поэтому интерпретатор не может получить к нему доступ. Добавив self к вашему вызову метода, вы можете указать, где находится метод, который вы хотите вызвать.

...