Pythoniga programmeerimine avab sulle palju võimalusi, mis ulatuvad kaugemale lihtsatest skriptidest. Oluline komponent objektorienteeritud programmeerimises on klassidega töötamine. Need moodustavad aluse objektidele ja võimaldavad sul luua ja hallata keerulisi andmestruktuure. Selles juhendis õpid, kuidas defineerida oma klasse Pythonis, et kasutada nende omadusi ja meetodeid tõhusalt.

Olulisemad tõdemused

  • Klassid on võtmetähtsusega objektorienteeritud programmeerimises Pythonis.
  • Initializer (konstruktor) võimaldab sul defineerida klassi loomisel konkreetseid omadusi.
  • Klasside meetodid võimaldavad sul kapseldada funktsioone, mis töötavad objekti omaduste peal.
  • Omadustele pääseb ligi punktoperaatori kaudu.

Samm-sammult juhend

Alustame klasside loomise alustega Pythonis. Esiteks pead sa defineerima uue klassi võtmesõnaga class. Seda saad teha oma Python-koodis järgmiselt:

Oma klasse Pythonis luua

Siin on meil tühi klass nimega Töötaja. Sa saad seda alguses defineerida ilma parameetriteta, mis tähendab, et klass luuakse ilma spetsiifilise algatamiseta. See on oluline alus, et tagada, et sa ei saaks hiljem vigu objektide loomisel.

Nüüd loo objekti sellest klassist. Selleks piisab, kui kasutada klassi nime ja panna tühjad sulud:

Selles näites oleme loonud Töötaja objekti, mille just moodustasime. Järgmine samm on klassi laiendamine omadustega. Näiteks võiksid sa lisada klassile Töötaja nime.

Esmalt pead sa selleks defineerima initializori, mis toimib sinu klassi konstruktorina. See toimub meetodi __init__ kaudu.

Klasside loomine Pythonis

Siin näed, kuidas defineeritakse __init__ konstruktor. Me edastame nime parameetrina ja kasutame self'i, et salvestada nimi praegusele objektile.

Nüüd, kui sul on omadus, saad objekti loomisel otse nime edastada:

Loomi oma klasse Pythonis

Kui sa nüüd lood objekti nimega osaleja, mille nimeks on "Jan", salvestatakse nimi instantsi. Autotäienduse abil saad kontrollida, kas nimi on õigesti seadistatud.

Omaduste kasutamiseks saad ligi pääseda nendele punktoperaatori abil:

Looma oma klasse Pythonis

See on hetk, mil saad ligi oma objekti omadustele. Selles näites saad sa välja trükkida osaleja nime.

Lisaks omadustele saad sa ka meetodeid implementeerida. Meetodi loomine toimub sarnaselt funktsiooni defineerimisega:

Oma klasside loomine Pythonis

Siin defineerid sa meetodi registreerimine. Pane tähele, et self edastatakse automaatselt meetodile parameetrina, et pääseda ligi instantsile. Registreerimise puhul võiksime näiteks trükkida välja eduka sõnumi:

Oma klasse Pythonis loomine

Kui sa kutsud meetodit registreerimine, näeb see välja järgmiselt:

Oma klasseid luua Pythoni abil

Siin kutsud sa meetodi osaleja instantsil, mis annab tagasisidet registreerimise kohta.

Lõpuks saame me ka meetoditele parameetreid edastada, sarnaselt funktsioonidele. Näiteks meetodile deregistreerimine, mis ootab parameetrit enneaegse registreerimise jaoks:

Oma klasse Pythonis luua

Siin analüüsid, kas osaleja soovib enneaegselt deregistreeruda ja annad vastava sõnumi.

ScreenShot_320

See näitab, kui interaktiivseks sinu klass ja meetodid võivad saada ning kuidas nad reageerivad sisenditele.

Kokkuvõtteks peaksime veel kord kokku võtma põhialused, mida oleme õppinud. Klasside defineerimise eesmärk on defineerida atribuudid ja meetodid, mis on seotud vastavate objektidega. Konstruktor __init__ on keskse tähtsusega atribuutide seadmisel objekti loomisel.

Kokkuvõte – Oma klasside loomine ja kasutamine Pythonis

Mõistmise ja nende põhialuste rakendamise kaudu saad sa Pythonis välja arendada jõulisi ja paindlikke programme. Sa saad luua klasse, mis kapseldavad konkreetseid funktsioone ja omadusi, et muuta programmeerimine kasutajasõbralikumaks ja tõhusamaks.

Korduma kippuvad küsimused

Kuidas defineerida klass Pythonis?Kasutage võtmesõna class, millele järgneb klassi nimi ja koolon.

Mis on __init__ konstruktor?Seda kasutatakse objekti loomisel algatuste tegemiseks.

Kuidas pääseda ligi objekti omadustele?Kasutage punktoperaatorit, sellele järgneb omaduse nimi, nt objekt.omadus.

Kas ma saaksin meetodile edastada mitu parameetrit?Jah, saate defineerida meetodeid, mis aktsepteerivad mitmeid parameetreid.

Kas ma saaksin oma klassides kasutada funktsioone?Jah, meetodid ei ole muud kui funktsioonid, mis on seotud klassiga.