Share This
Связаться со мной
Крути в низ
Categories
//Чем отличаются методы класса, статические и «простые» методы

Чем отличаются методы класса, статические и «простые» методы

04.05.2021Category : Python

chem otlichajutsja metody klassa staticheskie i prostye metody 6f6af00 - Чем отличаются методы класса, статические и"простые" методы

Давайте рассмотрим разницу между этими методами на примерах.

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

class MyClass:     def method(self):         return 'instance method called', self

Методы класса не нуждаются в экземпляре класса. Они не могут получить доступ к такому экземпляру (self), но у них есть доступ к самому классу через cls.

class MyClass:     def method(self):         return 'instance method called', self      @classmethod     def classmethod(cls):         return 'class method called', cls

Статические методы не имеют доступа к cls или self. Они работают как обычные функции, но принадлежат к пространству имен класса.

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'

Для экземпляра класса могут быть вызваны все типы методов :

>>> obj = MyClass() >>> obj.method() ('instance method called', <MyClass instance at 0x1019381b8>) >>> obj.classmethod() ('class method called', <class MyClass at 0x101a2f4c8>) >>> obj.staticmethod() 'static method called'

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

>>> MyClass.classmethod() ('class method called', <class MyClass at 0x101a2f4c8>) >>> MyClass.staticmethod() 'static method called' >>> MyClass.method() TypeError:     "unbound method method() must be called with MyClass "     "instance as first argument (got nothing instead)"

chem otlichajutsja metody klassa staticheskie i prostye metody efba88f - Чем отличаются методы класса, статические и"простые" методы

Хотите решать больше задач по Python

Подписывайтесь на нас в Телеграм

Подписаться ×

  • 7 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close