Instanță vs. Metode statice vs. clasă în Python Diferențele importante

Instanță vs. Metode statice vs. clasă în Python Diferențele importante / Programare

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

Cele 3 tipuri de metode în Python

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

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

Dacă sunteți nou la Python sau doriți doar să experimentați fără să instalați nimic, asigurați-vă că vizitați aceste shell-uri interactive Python Încercați Python în browser-ul dvs. Cu aceste Shell-uri interactive online gratuite Încercați Python în browser-ul dvs. cu aceste aplicații interactive online gratuite Shells Fie că treceți prin aceste exemple Python, fie că revizuiți elementele de bază ale tabelelor și a listelor, puteți testa codul chiar în browser. Iată cele mai bune interpreți Python online pe care le-am găsit. Citeste mai mult .

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

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

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

Ca orice funcție, decoratorii efectuează o sarcină. Diferența este că decoratorii aplică logica sau schimbă comportamentul altor funcții. Ele reprezintă o modalitate excelentă de reutilizare a codului și pot ajuta la separarea logicii de preocupările individuale.

Modelul de decorator este metoda preferată de Python de a defini metode statice sau de clasă. Iata cum arata cineva in Python:

De exemplu: "" "Exemplul de clasă" "" def __init __ (self): "" "Exemplul de configurare" "" print ('Hello, World!') @staticmethod def example_function "(" Am decorat funcția! ") de = DecoratorExample () de.example_function ()

Decoratorii trebuie să înainteze imediat o declarație de funcții sau de clasă. Ei încep cu @ semn și, spre deosebire de metodele normale, nu trebuie să puneți paranteze la sfârșit decât dacă treceți în argumente.

Este posibil să combinați mai mulți decoratori, să scrieți propriile dvs. și să le aplicați și la ore, dar nu va trebui să faceți niciunul din aceste exemple.

Metode de instanță în Python

Metodele de instanță sunt cele mai comune tipuri de metode din clasele Python. Acestea sunt numite pentru că pot accesa date unice ale instanței lor. Dacă aveți două obiecte create fiecare dintr-o clasă de mașină, fiecare dintre ele poate avea proprietăți diferite. Acestea pot avea culori diferite, dimensiuni ale motorului, scaune și așa mai departe.

Metode de instanță trebuie să aibă de sine ca parametru, dar nu aveți nevoie să transmiteți acest lucru în fiecare moment. Sinele este un alt termen special Python. În cadrul oricărei metode de instanță, vă puteți folosi de sine pentru a accesa orice date sau metode care ar putea să aparțină clasei dvs. Nu veți avea acces la ele fără a trece prin sine.

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

Iată un exemplu:

de exemplu: "" "Exemplul de clasă" "" def __init __ (auto): "" " Această metodă este o metodă de instanță! "" "Print (" Sunt o metodă instanță! ") Print ('Numele meu este' + auto.name) de = DecoratorExample () de.example_function

Nume variabilă este accesată prin de sine. Observați că atunci când example_function este numit, nu trebuie să treci de sine în-Python face asta pentru tine.

Metode statice în Python

Metodele statice sunt metode care sunt legate într-un fel de o clasă, dar nu au nevoie să acceseze date specifice clasei. Nu trebuie să utilizați de sine, și nici măcar nu trebuie să instanțiați o instanță, puteți să vă numiți metoda:

De exemplu: "" "Exemplul de clasă" "" def __init __ (self): "" "Exemplul de configurare" "" print ('Hello, World!') @staticmethod def example_function ! "" "print ('Sunt metoda statică!') de = DecoratorExample.example_function ()

@staticmethod decorator a fost folosit pentru a spune Python că această metodă este o metodă statică.

Metodele statice sunt excelente pentru funcțiile de utilitate, care îndeplinesc o sarcină izolată. Ei nu au nevoie să (și nu pot) să acceseze date de clasă. Ar trebui să fie complet autonome și să lucreze doar 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 cel de-al treilea și ultimul tip de metodă OOP. Metode de clasă știu despre clasa lor. Nu pot accesa date de instanță specifice, dar pot apela alte metode statice.

Nu sunt necesare metode de clasă de sine ca argument, dar au nevoie de un parametru numit cls. Asta înseamnă clasă, și ca de sine, este trecut automat de către Python.

Metodele de clasă sunt create utilizând @classmethod decorator.

Clasa DecoratorExemplu: "" "Exemplul de clasă" "" def __init __ (self): "" "Exemplul de configurare" "" print ("Hello, World! Metoda de clasificare!) "" ("Metoda de clasa I") cls.some_other_function () @ staticmethod def some_other_function (): print ('Hello!') de = DecoratorExample

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

Când să utilizați fiecare tip de metodă

Poate părea o decizie dificilă și descurajantă în alegerea tipurilor de metode din Python, dar în curând veți avea parte de puțină practică.

Chiar dacă scrieți doar scripturi mici pentru distracție, învățarea unei alte caracteristici OOP a Python este o mare abilitate de a cunoaște ș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 frecvent tip de metodă. Abilitatea de a accesa date și proprietăți unice pentru fiecare instanță.
  2. Metode statice: Nu pot accesa nimic din clasă. Cod complet autonom.
  3. Metode de clasă: Poate accesa metode limitate în clasă. Poate modifica detaliile specifice clasei.

Dacă acest tutorial a fost un pic mai avansat, sau nu chiar ceea ce căutați, atunci de ce nu aruncați o privire la aceste cursuri pentru a merge de la Python începător la pro 5 Cursuri care vă vor lua de la începător Python la Pro 5 Cursuri Ia-ti de la Python Incepator la Pro Aceste cinci cursuri te vor invata despre programarea in Python, una dintre cele mai tari limbi aflate chiar acum. Citeste mai mult ? Aceste 5 site-uri web sunt, de asemenea, excelente pentru incepatori Python. Dacă doriți o utilizare fizică reală a Python-ului, dar sunteți plictisit de Raspberry Pi, ce zici de ghidul nostru de a controla Arduino cu Python Cum să programați și să controlați un Arduino cu Python Cum să programați și să controlați un Arduino cu Python Din păcate, este imposibil să programați direct un program Arduino în Python, dar îl puteți controla prin USB folosind un program Python. Iată cum. Citeste mai mult ?

Explorați mai multe despre: Programare, Python.