Методи на Instance срещу Static срещу Class в Python: Важните разлики

Методи на Instance срещу Static срещу Class в 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 и за разлика от нормалните методи, не е нужно да поставяте скоби в края, освен ако не предавате аргументи.





Възможно е да комбинирате множество декоратори, да напишете свои собствени и да ги приложите и към класове, но няма да е необходимо да правите нищо от това за тези примери.

как да споделите игра на ps5

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

The име достъп до променливата себе си . Забележете, че когато примерна функция се нарича, не е нужно да се предавате самостоятелно-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()

The @staticmethod decorator беше използван, за да каже на Python, че този метод е статичен.

Статичните методи са чудесни за помощни функции, които изпълняват задача изолирано. Те не трябва (и не могат) да имат достъп до данните за класа. Те трябва да бъдат напълно самостоятелни и да работят само с данни, предадени като аргументи. Можете да използвате статичен метод, за да добавите две числа заедно, или да отпечатате даден низ.

Методи на класове в Python

Методите на класа са третият и последен тип метод на ООП, който трябва да знаете. Класовите методи знаят за своя клас. Те нямат достъп до конкретни данни на екземпляра, но могат да извикат други статични методи.

Методите на класа не се нуждаят себе си като аргумент, но те се нуждаят от параметър, наречен cls . Това означава клас и подобно на себе си, автоматично се предава от 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, но скоро ще се справите с малко практика.

деактивирайте достъпа до мрежата до системния регистър на Windows

Дори ако пишете само малки скриптове за забавление, изучаването на друга OOP функция на Python е страхотно умение да се знае и може да помогне за улесняване на кода при отстраняване на неизправности и по -лесно повторно използване в бъдеще.

В обобщение:

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

Ако този урок е малко напреднал или не е точно това, което търсите, тогава защо да не погледнете тези курсове, за да преминете от начинаещ към професионалист на Python? Тези 5 уебсайта са чудесни и за начинаещи в Python. Ако искате физическа употреба в реалния свят на Python, но ви е скучно от Raspberry Pi, какво ще кажете за нашето ръководство за контролиране на Arduino с Python ?

Дял Дял Туит електронна поща Как да почистите вашия компютър с Windows с помощта на командния ред

Ако на вашия компютър с Windows има малко място за съхранение, почистете боклуците, като използвате тези бързи помощни програми за командния ред.

Прочетете Напред
Свързани теми
  • Програмиране
  • Програмиране
  • Python
За автора Джо Кобърн(136 статии са публикувани)

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

Още от Джо Кобърн

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате