Экземплярные, статические и классовые методы в Python: важные различия

Методы Python часто могут сбивать с толку, когда вы попадаете в объектно-ориентированное программирование (ООП). В этом руководстве рассматриваются три основных типа методов в Python.

3 типа методов в Python

В Python есть три типа методов: методы экземпляра , статические методы и класс. методы .

Знание различий не всегда требуется для кодирования базовых скриптов Python, но как только вы перейдете в ООП, различия могут существенно измениться.

Если вы новичок в Python или просто хотите поэкспериментировать, не устанавливая ничего, обязательно посетите эти интерактивные интерактивные оболочки Python.

Перед тем, как мы начнем: понимание шаблонов декораторов

Прежде чем рассматривать различия, важно понять шаблон проектирования, известный как шаблон декоратора , или просто называемый декоратором .

Декораторы звучат сложно, но бояться нечего. Декораторы — это просто функции. Вы можете написать их самостоятельно или использовать те, которые включены в библиотеки, или стандартную библиотеку Python.

Как и любая функция, декораторы выполняют задачу. Разница здесь в том, что декораторы применяют логику или изменяют поведение других функций. Они являются отличным способом повторного использования кода и могут помочь разделить логику на отдельные задачи.

Шаблон декоратора — это предпочтительный способ Python для определения статических методов или методов класса. Вот как один из них выглядит в Python:

  class DecoratorExample: 
"" "Пример класса" ""
def __init __ (self):
"" "Пример установки" ""
print ('Hello, World!')
@staticmethod
def example_function ():
"" "Этот метод украшен!" ""
print ('Я украшена функцией!')

de = DecoratorExample ()
de.example_function ( )

Декораторы должны непосредственно предшествовать объявлению функции или класса. Они начинаются со знака @ , и, в отличие от обычных методов, вам не нужно заключать скобки в конце, если вы не передаете аргументы.

Можно объединить несколько декораторов, написать свой собственный и применить их к классам, но вы выиграли ‘ Для этих примеров ничего из этого не нужно делать.

Методы экземпляра в Python

Экземпляр методы являются наиболее распространенным типом методов в классах Python. Они называются так потому, что могут получить доступ к уникальным данным своего экземпляра. Если у вас есть два объекта, каждый из которых создан из автомобильного класса, каждый из них может иметь разные свойства. Они могут иметь разные цвета, размеры двигателя, сиденья и так далее.

Методы экземпляра должны иметь параметр self , но вам не нужно передавать его каждый раз. Я — еще один специальный термин Python. Внутри любого метода экземпляра вы можете использовать self для доступа к любым данным или методам, которые могут находиться в вашем классе. Вы не сможете получить к ним доступ, не пройдя через себя.

Наконец, поскольку методы экземпляра являются наиболее распространенными, декоратор не требуется. Любой созданный вами метод будет автоматически создан как метод экземпляра, если вы не укажете Python иначе.

Вот пример:

  class DecoratorExample: 
"" "Пример класса" ""
def __init __ (self):
"" "Пример установки" ""
print ('Hello, World!')
self.name = 'Decorator_Example'
def example_function (self):
"" "Этот метод является методом экземпляра!" ""
print ('I 'метод экземпляра!')
print ('Меня зовут' + self.name)

de = DecoratorExample ()
de.example_function ()

Доступ к переменной name осуществляется через self . Обратите внимание, что когда вызывается example_function , вам не нужно передавать self — Python сделает это за вас.

Статические методы в Python

Статические Методы — это методы, которые каким-то образом связаны с классом, но не нуждаются в доступе к каким-либо данным, относящимся к классу. Вам не нужно использовать self , и вам даже не нужно создавать экземпляр, вы можете просто вызвать свой метод:

  class DecoratorExample: 
"" "Пример класса" ""
def __init __ (self):
"" "Пример установки" ""
print ('Hello , World! ')
@staticmethod
def example_function ():
"" "Этот метод является статическим!" ""
print (' I 'ma static method!')

de = DecoratorExample.example_function ()

Декоратор @staticmethod использовался, чтобы сообщить Python, что этот метод является статическим.

Статические методы отлично подходят для служебных функций, которые выполняют задачу изолированно. Им не нужен (и не может) доступ к данным класса. Они должны быть полностью автономными и работать только с данными, переданными в качестве аргументов. Вы можете использовать статический метод для сложения двух чисел или распечатать заданную строку.

Методы класса в Python

Класс методы — это третий и последний тип метода ООП, который необходимо знать. Методы класса знают о своем классе. У них нет доступа к данным конкретного экземпляра, но они могут вызывать другие статические методы.

Методы класса не нуждаются в аргументе self , но им нужен параметр с именем cls . Это означает class и, как и self, автоматически передается Python.

Методы класса создаются с помощью декоратора @classmethod .

  класс Decorator Пример: 
"" "Пример класса" ""
def __init __ (self):
"" "Пример настройки" ""
print ('Hello, World!')
@classmethod
def example_function (cls):
"" "Этот метод является методом класса!" ""
print ('Я ' метод класса! ')
cls.some_other_function ()
@staticmethod
def some_other_function ():
print ('Hello!')

de = DecoratorExample ()
de. example_function ()

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

Когда использовать каждый тип метода

Выбор между типами методов в Python может показаться трудным и обескураживающим, но вы скоро научитесь этому, немного попрактиковавшись.

Даже если вы пишете крошечные скрипты только для развлечения, изучение другой возможности ООП в Python — отличный навык, который нужно знать, и может помочь упростить устранение неполадок в коде и упростить его повторное использование в будущем.

Вкратце:

  1. Методы экземпляра: наиболее распространенный тип метода. Возможность доступа к данным и свойствам, уникальным для каждого экземпляра.
  2. Статические методы: не может получить доступ ни к чему другому в классе. Полностью автономный код.
  3. Методы класса: Может иметь доступ к ограниченным методам в классе. Может изменять детали класса.

Если это руководство было немного продвинутым или не совсем то, что вы искали, то почему бы не взглянуть на эти курсы, чтобы перейти от новичка к Python до профессионала? Эти 5 веб-сайтов также отлично подходят для начинающих Python. Если вы хотите физически использовать Python в реальном мире, но устали от Raspberry Pi, как насчет нашего руководства по управлению Arduino с помощью Python?

Оцените статью
oilgasindustry.ru
Добавить комментарий