Мне было интересно, что подразумевается под состоянием класса в OOP, особенно в Python - PullRequest
0 голосов
/ 09 марта 2020

Сегодня кто-то спросил меня о методах stati c и сказал, верно ли, что метод stati c не может получить доступ или изменить состояние класса?

1 Ответ

0 голосов
/ 09 марта 2020

Общий ОО ответ: состояние объекта - это значения его атрибутов. Например, если

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y


p = Point(42, 43)

, то состояние p равно {"x": 42, "y": 43}

Чтобы изменить состояние объекта, метод должен иметь доступ к этому объекту. Для обычных методов это обеспечивается параметром self.

Теперь классы Python также являются объектами (экземпляр класса type), поэтому Python имеет "методы-методы", которые могут вызываться либо в экземпляре, либо в самом классе, но вместо объекта получить сам объект класса. Эти методы класса могут затем изменять состояние класса (атрибуты класса, которые являются общими для всех экземпляров класса).

Статический метод не получает ни экземпляр, ни класс, поэтому он не может изменить ни класс, ни состояние экземпляра. на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...