de Hari Santanam

Să devenim clasici: cum să creăm module și clase cu Python

Sa devenim clasici cum sa cream module si clase cu
Cuburi

În limbaje de computer orientate obiect, cum ar fi Python, clasele sunt practic un șablon pentru a vă crea propriile obiecte. Obiectele sunt o încapsulare a variabilelor și funcțiilor într-o singură entitate. Obiectele își obțin variabilele și funcțiile din clase.

Spune ce?

Iată câteva exemple care vă vor ajuta să înțelegeți – citiți mai departe. Există, de asemenea, un shell de cod interactiv, pur și simplu apăsați butonul „Run” din partea de sus a ferestrei specifice.

Cel mai simplu mod de a descrie cursurile și cum să le utilizați este acesta:

Imaginați-vă că aveți puteri mari. Creați o specie („clasă”).

ad-banner

Apoi creați atribute pentru acea specie („proprietăți”) – înălțime, greutate, membre, culoare, puteri și așa mai departe.

Apoi creați o instanță a acelei specii – câinele Fido, Drogon din Game of Thrones și așa mai departe. Apoi lucrați cu aceste instanțe:

  • Într-un joc, de exemplu, ei se angajează în acțiune, interacționează, folosind atributele lor.
  • Într-o aplicație bancară, acestea ar fi diferitele tranzacții.
  • Într-o aplicație de cumpărare / vânzare / tranzacționare / închiriere a vehiculelor, clasa de vehicule ar putea genera apoi subcategorii, cum ar fi mașinile. Fiecare ar avea atribute precum kilometrajul, opțiunile, caracteristicile, culoarea și decuparea.

Puteți vedea deja de ce este util acest lucru. Creați, reutilizați, adaptați și îmbunătățiți elementele într-un mod foarte eficient, logic și util.

Până acum, probabil că ați realizat că acesta este un mod de clasificare și grupare, unul care este similar cu modul în care oamenii învață:

  • Animalele sunt lucruri vii care nu sunt oameni sau copaci, într-un sens de bază
  • apoi treci la diferite tipuri de animale – câinii, pisicile sunt probabil primele animale despre care majoritatea dintre noi am aflat
  • apoi treceți la diferite atribute ale animalelor – forme, dimensiuni, sunete, anexe și așa mai departe.

De exemplu, când erai copil, prima înțelegere a unui câine a fost probabil ceva cu patru picioare care latra. Apoi ai învățat să distingi că unii erau câini adevărați, alții erau jucării. Că acest concept de „câine” conținea multe tipuri.

Crearea și utilizarea claselor sunt practic:

  • construirea unui șablon pentru a pune „lucruri” – o clasificare
  • care poate fi apoi operat. De exemplu, atragerea tuturor persoanelor cu câini pe care le-ați putea solicita să le conectați la un blog despre animale de companie sau a tuturor clienților băncii care ar putea avea perspective bune pentru un nou card de credit.

Principalul punct aici este clase sunt obiecte care pot produce instanțe ale acestor șabloane, pe care se pot aplica operații și metode. Este un mod excelent de a conceptualiza, organiza și construi o ierarhie pentru orice organizație sau proces.

Pe măsură ce lumea noastră devine mai complexă, aceasta este o modalitate de a imita această complexitate dintr-o perspectivă ierarhică. De asemenea, construiește o înțelegere mai profundă a proceselor și interacțiunilor pentru setări de afaceri, tehnice și sociale dintr-un punct virtual al tehnologiei informației.

Un exemplu ar putea fi un joc video pe care îl creați. Fiecare personaj ar putea fi o „clasă”, cu propriile sale atribute, care interacționează cu instanțele altor clase. Regele George din clasa „Regele” ar putea interacționa cu Court Jester Funnyman din clasa „Clovn” și așa mai departe. Un rege ar putea avea o clasă regală „slugă”, iar o clasă „slugă” ar avea întotdeauna o clasă „slugă”, de exemplu.

Iată ce vom face:

  • creați o clasă și folosiți-o
  • creați un modul și mutați crearea și inițierea clasei în modul
  • apelați modulul într-un program nou pentru a utiliza clasa

Codul este disponibil în GitHub aici.

#TSB - Create Class in Python - rocket positions (x,y) and graph
#some items and comments bolded to call attention to processimport matplotlib.pyplot as plt
class Rocket():  def __init__(self, x=0, y=0):    #each rocket has (x,y) position; user or calling function has choice    #of passing in x and y values, or by default they are set at 0    self.x = x    self.y = y      def move_up(self):    self.y += 1      def move_down(self):    self.y -= 1      def move_right(self):    self.x += 1      def move_left(self):    self.x -= 1
#Make a series of rockets - x,y positions, I am calling it rocketrockets=[]rockets.append(Rocket())rockets.append(Rocket(0,2))rockets.append(Rocket(1,4))rockets.append(Rocket(2,6))rockets.append(Rocket(3,7))rockets.append(Rocket(5,9))rockets.append(Rocket(8, 15))  #Show on a graph where each rocket is
for index, rocket in enumerate(rockets):  #original position of rockets  print("Rocket %d is at (%d, %d)." % (index, rocket.x, rocket.y))  plt.plot(rocket.x, rocket.y, 'ro', linewidth=2, linestyle="dashed", markersize=12)  #move the 'rocket' one up  rocket.move_up()  print("New Rocket position %d is at (%d, %d)." % (index, rocket.x, rocket.y))  #plot the new position  plt.plot(rocket.x, rocket.y, 'bo', linewidth=2, linestyle="dashed", markersize=12)  #move the rocket left, then plot the new position  rocket.move_left()  plt.plot(rocket.x, rocket.y, 'yo', linewidth=2, linestyle="dashed", markersize=12)
#show graph legend to match colors with positionplt.gca().legend(('original position','^ - Moved up', '< - Moved left'))plt.show()#plt.legend(loc="upper left")
Sa devenim clasici cum sa cream module si clase cu
Ieșire din codul de mai sus, folosind clasa Python

Acum permiteți-ne să creăm un modul și să mutăm o parte din codul de mai sus în modul. De fiecare dată când trebuie să creăm acest set simplu de coordonate x, y în orice program, putem folosi modulul pentru a face acest lucru.

Ce este un modul și de ce avem nevoie de el?

Un modul este un fișier care conține definiții și instrucțiuni Python. Modulul este codul Python care poate fi apelat din alte programe pentru sarcini utilizate în mod obișnuit, fără a fi nevoie să le introduceți în fiecare program care le folosește.

De exemplu, când apelați „matplotlib.plot”, apelați un modul de pachet. Dacă nu ați avea acest modul, ar trebui să definiți funcționalitatea graficului în fiecare program care a folosit un grafic grafic.

Din Python documentație:

Dacă ieșiți din interpretul Python și îl introduceți din nou, definițiile pe care le-ați făcut (funcții și variabile) se pierd. Prin urmare, dacă doriți să scrieți un program ceva mai lung, este mai bine să folosiți un editor de text pentru a pregăti intrarea pentru interpret și să o rulați cu fișierul respectiv ca intrare. Acest lucru este cunoscut ca crearea unui script. Pe măsură ce programul dvs. se prelungește, vă recomandăm să îl împărțiți în mai multe fișiere pentru o întreținere mai ușoară. De asemenea, vă recomandăm să utilizați o funcție utilă pe care ați scris-o în mai multe programe fără a copia definiția acesteia în fiecare program.

Pentru a susține acest lucru, Python are o modalitate de a pune definiții într-un fișier și de a le utiliza într-un script sau într-o instanță interactivă a interpretului. Un astfel de fișier se numește modul; definițiile dintr-un modul pot fi importate în alte module sau în modulul principal (colecția de variabile la care aveți acces într-un script executat la nivelul superior și în modul calculator).

Iată modulul nostru simplu. Este nevoie de crearea clasei și funcțiile pentru a muta o instanță a acelei clase din programul de mai sus și în propria sa clasă. Vom folosi acest lucru într-un nou program, pur și simplu apelând și referind acest modul:

Observați ce am făcut mai sus:

  • a creat și inițializat clasa
  • a creat o funcție pentru a muta o instanță a clasei în cele patru direcții majore (sus, jos, dreapta, stânga) și incrementele – ca parametri sau argumente către funcție
  • a creat o altă funcție pentru a calcula distanța dintre două instanțe ale clasei, utilizând formula distanței grafice

Iată cum vom folosi noul modul pentru a rescrie același program din prima parte. Observați în secțiunea de import la început, acum importăm simple_module1 modul pe care tocmai l-am creat:

Iată ieșirea din cod folosind modulul nostru. Rețineți că sunt aceleași, cu excepția titlului graficului și a formei marcatorilor de poziție, pe care le-am schimbat în scopuri comparative.

1611643027 301 Sa devenim clasici cum sa cream module si clase cu
Ieșire din cod din crearea și apelarea propriului nostru modul!
1611643027 509 Sa devenim clasici cum sa cream module si clase cu
Compararea fișierului original stânga (creați clasa, utilizați-o) și aceeași funcționalitate folosind un modul, dreapta
1611643028 291 Sa devenim clasici cum sa cream module si clase cu
Compararea rezultatului. În partea dreaptă, schimb forma marcajului pentru distincție, dar pozițiile sunt neschimbate.

Este minunat, ați putea spune – care sunt alte utilizări în acest sens? Un exemplu clasic este un cont bancar. O clasă de clienți ar putea conține numele și datele de contact și – mai important – clasa de cont ar avea elemente de depunere și retragere.

Acest lucru este extrem de simplificat, dar, în scop ilustrativ, este util. Gata – creați un șablon, apoi definiți instanțele acelui șablon cu detalii (proprietăți) și adăugați valoare adăugând, scăzând, modificând, mutând și utilizând aceste instanțe pentru obiectivele programului dvs.

Încă vă întrebați despre cursuri? Ok, hai să devenim „de clasă” – iată o altă ilustrare simplă. Vom numi această clasă „Persoană”. Are doar două proprietăți – numele și vârsta. Apoi vom adăuga o instanță cu numele și vârsta unei persoane și o vom imprima. În funcție de obiectivul dvs., vă puteți imagina toate celelalte detalii pe care le-ați putea adăuga – de exemplu, starea civilă și preferințele de locație pentru o aplicație de rețele sociale, experiența de muncă în ani și specializarea în industrie pentru o aplicație legată de carieră. Apăsați micul triunghi de mai jos pentru a vedea cum funcționează.

Deci, iată-l. Puteți crea multe clase diferite, cu clase părinte, subclase și așa mai departe. Vă mulțumim pentru lectură – vă rog să bateți din palme dacă v-a plăcut Iată câteva alte referințe dacă doriți să aflați mai multe: