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

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

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





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

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





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





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

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

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



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

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





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

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is decorated! '''
print('I'm a decorated function!')

de = DecoratorExample()
de.example_function()

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





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

почему мой iphone не отправляет текстовые сообщения

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

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

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

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

Вот пример:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
self.name = 'Decorator_Example'
def example_function(self):
''' This method is an instance method! '''
print('I'm an instance method!')
print('My name is ' + self.name)

de = DecoratorExample()
de.example_function()

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

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

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

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is a static method! '''
print('I'm a static method!')

de = DecoratorExample.example_function()

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

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

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

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

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

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

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@classmethod
def example_function(cls):
''' This method is a class method! '''
print('I'm a class method!')
cls.some_other_function()
@staticmethod
def some_other_function():
print('Hello!')

de = DecoratorExample()
de.example_function()

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

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

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

как скопировать адреса электронной почты из Gmail

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

В итоге:

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

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

Делиться Делиться Твитнуть Эл. адрес Как очистить компьютер с Windows с помощью командной строки

Если на вашем ПК с Windows не хватает места для хранения, удалите ненужные файлы с помощью этих быстрых утилит командной строки.

Читать далее
Похожие темы
  • Программирование
  • Программирование
  • Python
Об авторе Джо Кобурн(136 опубликованных статей)

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

Ещё от Joe Coburn

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться