Экземпляры против статических методов против методов класса в 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()

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

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

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

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

Методы экземпляра должны иметь сам в качестве параметра, но вам не нужно передавать это каждый раз. Self — еще один специальный термин 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 называется, вам не нужно передавать себя в — 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

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

Методы класса не нужны сам в качестве аргумента, но им нужен параметр под названием ЦБС. Это означает учебный класс, и, как и я, автоматически передается 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 может показаться сложным и пугающим, но вскоре вы освоите его с небольшой практикой.

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

В итоге:

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

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

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

?

Ссылка на основную публикацию
Adblock
detector