Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

В чем разница между методами экземпляра, класса и статическими методами в Python?

ПрограммированиеData science+3
Анонимный вопрос
Data Science
  · 7,2 K
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 18 июл 2022
class MyClass:
  » » def method(self):
  » » » » return 'instance method called', self
» »  @classmethod
» »  def classmethod(cls):
» » » » return 'class method called', cls
» »  @staticmethod
» »  def staticmethod():
» » » »  return 'static method called' 
=================
Методы экземпляра
=================
Первый метод в MyClass, названный method, является обычным методом экземпляра. Это основной тип метода без излишеств, который вы будете использовать большую часть времени. Вы можете видеть, что метод принимает один параметр, self, который указывает на экземпляр MyClass при вызове метода (но, конечно, методы экземпляра могут принимать более одного параметра).Через параметр self методы экземпляра могут свободно обращаться к атрибутам и другим методам того же объекта. Это дает им большие возможности, когда дело доходит до изменения состояния объекта. Мало того, что они могут изменять состояние объекта, методы экземпляра также могут получить доступ к самому классу через атрибут self.class. Это означает, что методы экземпляра также могут изменять состояние класса.
==============
Методы класса
==============
Cравним это со вторым методом MyClass.classmethod. Этот метод помечен декоратором @classmethod, чтобы пометить его как метод класса.Вместо того чтобы принимать параметр self, методы класса принимают параметр cls, указывающий на класс, а не на экземпляр объекта, при вызове метода.Поскольку метод класса имеет доступ только к этому аргументу cls, он не может изменять состояние экземпляра объекта. Для этого потребуется доступ к self. Однако методы класса по-прежнему могут изменять состояние класса, которое применяется ко всем экземплярам класса.
==================
Статические методы
==================
Третий метод, MyClass.staticmethod, был помечен декоратором @staticmethod, чтобы пометить его как статический метод. Этот тип метода не принимает ни параметров self, ни cls (но, конечно, он может принимать произвольное количество других параметров). Поэтому статический метод не может ни изменять состояние объекта, ни состояние класса. Статические методы ограничены в том, к каким данным они могут получить доступ, и в первую очередь они представляют собой способ пространства имен ваших методов.
Детали и примеры кода смотри в блоге  https://informatics-ege.blogspot.com/2022/07/python-instance-class-and-static-methods.html
Я очень рад быть частью этой группы и надеюсь внести положительный вклад.   · 8 дек 2022
В Python метод — это функция, связанная с объектом. Методы определяются внутри класса и используются для выполнения операций с данными объекта. В Python есть три типа методов: методы экземпляра, методы класса и статические методы. Методы экземпляра — это методы, которые работают с отдельными экземплярами класса. Эти методы имеют доступ к данным, связанным с конкретным... Читать далее
1 эксперт согласен
Пишу код и т.п.  · 18 июл 2022  · itustinov.ru
Разница между обычными и статическими методами та же, как и в других языках — статический метод принадлежит классу, а не объекту. Он может быть вызван без создания объекта, и, очевидно, его список аргументов не начинается со ссылки на объект (self). Однако, явно называть свой класс из статического метода (для доступа к другим его статическим методам и переменным) может... Читать далее
1 эксперт согласен
Вообще-то ссылка на класс нужна не только и не столько для того, чтобы было короткое имя вместо имени класса. Она... Читать дальше