Instanța vs. Metodele statice vs. Metodele de clasă în Python: diferențele importante

Instanța vs. Metodele statice vs. Metodele de clasă în Python: diferențele importante

Metodele Python pot fi adesea confuze odată ce intrați în programarea orientată pe obiecte (OOP). Acest ghid acoperă cele trei tipuri principale de metode din Python.





Cele 3 tipuri de metode din Python

Există trei tipuri de metode în Python: metode de instanță , metode statice , și metode de clasă .





Cunoașterea diferențelor nu este întotdeauna necesară pentru a coda scripturile de bază Python, dar odată ce avansați în OOP, diferențele pot face o schimbare mare.





Dacă sunteți nou în Python sau doriți doar să experimentați fără a fi nevoie să instalați nimic, atunci asigurați-vă că le vizitați cochilii interactive Python online .

Înainte de a începe: Înțelegerea modelelor de decorator

Înainte de a analiza diferențele, este important să înțelegeți un model de design cunoscut sub numele de model decorator , sau pur și simplu numit a decorator .



Decoratorii sună complex, dar nu este nimic de temut. Decoratorii sunt pur și simplu funcții. Le puteți scrie singur sau le puteți utiliza pe cele incluse în biblioteci sau în biblioteca standard Python.

Ca orice funcție, decoratorii îndeplinesc o sarcină. Diferența este că decoratorii aplică logică sau schimbă comportamentul altor funcții. Acestea sunt o modalitate excelentă de reutilizare a codului și pot ajuta la separarea logicii în preocupări individuale.





Modelul decorator este modul preferat de Python de a defini metodele statice sau de clasă. Iată cum arată cineva în 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()

Decoratorii trebuie să preceadă imediat o declarație de funcție sau de clasă. Încep cu @ semn, și spre deosebire de metodele normale, nu trebuie să puneți paranteze la final decât dacă transmiteți argumente.





Este posibil să combinați mai mulți decoratori, să-i scrieți pe al dvs. și să-i aplicați și la cursuri, dar nu va trebui să faceți nimic din aceste exemple.

cum să faceți capturi de ecran fără ca aceștia să știe

Metode de instanță în Python

Metodele de instanță sunt cel mai frecvent tip de metode din clasele Python. Acestea se numesc astfel deoarece pot accesa date unice ale instanței lor. Dacă aveți două obiecte create fiecare dintr-o clasă de mașini, atunci fiecare poate avea proprietăți diferite. Acestea pot avea culori diferite, dimensiuni ale motorului, scaune și așa mai departe.

Metodele de instanță trebuie să aibă de sine ca parametru, dar nu trebuie să treceți acest lucru de fiecare dată. Sinele este un alt termen special Python. În cadrul oricărei metode de instanță, puteți utiliza auto pentru a accesa orice date sau metode care ar putea locui în clasa dvs. Nu veți putea să le accesați fără a trece prin sine.

În cele din urmă, deoarece metodele de instanță sunt cele mai frecvente, nu este nevoie de niciun decorator. Orice metodă pe care o creați va fi creată automat ca metodă de instanță, cu excepția cazului în care spuneți altfel Python.

Iată un exemplu:

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 Nume variabila este accesată prin de sine . Observați că atunci când exemplu_funcție este chemat, nu trebuie să treci de sine în --- Python face asta pentru tine.

Metode statice în Python

Metodele statice sunt metode care sunt legate de o clasă într-un fel, dar nu trebuie să acceseze date specifice clasei. Nu trebuie să folosiți de sine și nici nu trebuie să instanțiați o instanță, puteți apela pur și simplu metoda:

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 a fost folosit pentru a spune Python că această metodă este o metodă statică.

Metodele statice sunt excelente pentru funcțiile utilitare, care îndeplinesc o sarcină în mod izolat. Nu au nevoie (și nu pot) accesa datele clasei. Acestea ar trebui să fie complet independente și să funcționeze numai cu date transmise ca argumente. Puteți utiliza o metodă statică pentru a adăuga două numere împreună sau pentru a imprima un șir dat.

Metode de clasă în Python

Metodele de clasă sunt al treilea și ultimul tip de metodă OOP de cunoscut. Metodele de clasă știu despre clasa lor. Nu pot accesa date de instanță specifice, dar pot apela alte metode statice.

Metodele de clasă nu au nevoie de sine ca argument, dar au nevoie de un parametru numit cls . Aceasta înseamnă clasă și, ca și sine, este transmis automat de Python.

Metodele de clasă sunt create folosind @classmethod decorator.

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()

Metodele de clasă sunt, probabil, cele mai confuze tipuri de metode ale celor trei, dar își au utilizările. Metodele de clasă pot manipula clasa în sine, ceea ce este util atunci când lucrați la proiecte mai mari și mai complexe.

Când se utilizează fiecare tip de metodă

Poate părea o decizie dificilă și descurajantă de a alege între tipurile de metode din Python, dar în curând veți obține atenția cu un pic de practică.

Cele mai bune 10 jocuri mobile multiplayer pe mai multe platforme

Chiar dacă scrieți doar scripturi minuscule pentru distracție, învățarea unei alte caracteristici OOP a Python este o abilitate excelentă de știut și vă poate ajuta să faceți codul mai ușor de depanat și mai ușor de reutilizat în viitor.

În concluzie:

  1. Metode de instanță: Cel mai comun tip de metodă. Capabil să acceseze date și proprietăți unice pentru fiecare instanță.
  2. Metode statice: Nu pot accesa nimic altceva din clasă. Cod complet autonom.
  3. Metode de clasă: Poate accesa metode limitate din clasă. Poate modifica detalii specifice clasei.

Dacă acest tutorial era puțin avansat sau nu chiar ceea ce căutați, atunci de ce să nu aruncați o privire la aceste cursuri pentru a merge de la începutul Python la profesionist? Aceste 5 site-uri web sunt de asemenea excelente pentru începătorii Python. Dacă doriți o utilizare fizică, reală a Python, dar vă plictisiți de Raspberry Pi, ce zici de ghidul nostru pentru controlând Arduino cu Python ?

Acțiune Acțiune Tweet E-mail Cum să vă curățați computerul Windows utilizând linia de comandă

În cazul în care PC-ul dvs. Windows nu mai are spațiu de stocare, curățați junk-ul folosind aceste utilitare rapide de prompt de comandă.

Citiți în continuare
Subiecte asemănătoare
  • Programare
  • Programare
  • Piton
Despre autor Joe Coburn(136 articole publicate)

Joe este absolvent de Informatică de la Universitatea Lincoln, Marea Britanie. Este un dezvoltator de software profesionist și, atunci când nu zboară cu drone sau nu scrie muzică, poate fi găsit adesea făcând fotografii sau producând videoclipuri.

Mai multe de la Joe Coburn

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona