Sobes.tech
Back to questions
Junior — Middle
59

Чем отличается вызов метода класса от обращения к экземпляру этого класса?

Answer from AI

sobes.tech AI

В Python вызов метода класса и вызов метода экземпляра отличаются тем, к какому объекту они привязаны и какие параметры получают.

  • Метод экземпляра — это обычный метод, который вызывается через объект (экземпляр класса). Первый параметр всегда self, который ссылается на конкретный экземпляр. Через self можно обращаться к атрибутам и другим методам этого объекта.

  • Метод класса — это метод, который привязан к самому классу, а не к экземпляру. Он объявляется с декоратором @classmethod и первым параметром принимает cls — ссылку на класс. Такие методы могут работать с атрибутами класса и создавать новые экземпляры.

Пример:

class MyClass:
    class_var = 0

    def instance_method(self):
        print(f"Это метод экземпляра, self: {self}")

    @classmethod
    def class_method(cls):
        print(f"Это метод класса, cls: {cls}")

obj = MyClass()
obj.instance_method()  # Вызов метода экземпляра
MyClass.class_method() # Вызов метода класса

Таким образом, вызов метода класса не требует создания экземпляра, а метод экземпляра работает с конкретным объектом.