Общий ОО ответ: состояние объекта - это значения его атрибутов. Например, если
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 имеет "методы-методы", которые могут вызываться либо в экземпляре, либо в самом классе, но вместо объекта получить сам объект класса. Эти методы класса могут затем изменять состояние класса (атрибуты класса, которые являются общими для всех экземпляров класса).
Статический метод не получает ни экземпляр, ни класс, поэтому он не может изменить ни класс, ни состояние экземпляра. на самом деле.