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

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

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

  • 0 views
  • 0 Comment

Leave a Reply

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

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

Свежие комментарии

    Рубрики

    About Author 01.

    Roman Spiridonov
    Roman Spiridonov

    Привет ! Мне 38 лет, я работаю в области информационных технологий более 4 лет. Тут собрано самое интересное.

    Categories 05.

    © Speccy 2020 / All rights reserved

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