Programavimas su Python atveria daugybę galimybių, kurios viršija paprastus scenarijus. Pagrindinė objektiškai orientuoto programavimo komponentė yra darbas su klasėmis. Jos sudaro objektų pagrindą ir leidžia tau kurti ir valdyti sudėtingas duomenų struktūras. Šiame vadove išmoksite, kaip apibrėžti savo klases Python'e, kad efektyviai išnaudotumėte jų savybes ir metodus.

Svarbiausios įžvalgos

  • Klasės yra raktas į objektiškai orientuotą programavimą Python'e.
  • Initializer (konstruktorius) leidžia tau apibrėžti specifines savybes kuriant klasę.
  • Klasėse esantys metodai leidžia kapsuliuoti funkcijas, kurios dirba su objekto savybėmis.
  • Prieiga prie savybių vyksta naudojant taško operatorių.

Žingsnis po žingsnio vadovas

Pradėkime nuo pagrindų kuriant klases Python'e. Pirmiausia turi apibrėžti naują klasę naudodamas raktažodį class. Tai gali padaryti savo Python kode taip:

Sukurti savo klases Python'e

Čia matome tuščią klasę pavadinimu Darbuotojas. Pirmiausia gali ją apibrėžti be parametrų, kas reiškia, kad klasė bus sukurta be specifinės inicializacijos. Tai yra svarbi baza, kad vėliau nesusidurtum su klaidomis kuriant objektus.

Dabar sukurk šios klasės objektą. Tam pakanka naudoti klasės pavadinimą ir įdėti tuščią skliaustą:

Šiuo atveju turime objektą Darbuotojas, kurį ką tik sukūrėme. Kitas žingsnis yra išplėsti klasę pridėti savybėmis. Pavyzdžiui, galėtum pridėti klasės Darbuotojas vardą.

Pirmiausia tam turi apibrėžti inicializatorių, kuris tarnauja kaip tavo klasės konstruktorius. Tai atliekama naudojant metodą __init__.

Sukurkite savo klases Python kalboje

Čia matai, kaip apibrėžiamas __init__ konstruktorius. Mes perduodame vardą kaip parametrą ir naudojame self, kad išsaugotume vardą dabartiniam objektui.

Dabar, kai turi savybę, gali perduoti vardą tiesiogiai kuriant objektą:

Sukurti savas klases Python kalboje

Jei dabar sukuri objektą dalyvis su vardu "Jan", vardas bus saugomas instancijoje. Naudodamas autocompletion gali patikrinti, ar vardas teisingai nustatytas.

Norint pasinaudoti savybėmis, gali jas pasiekti naudodamas taško operatorių:

Sukurti savo klases Python

Tai yra ta vieta, kur gali pasiekti savo objekto savybes. Šiuo atveju išspausdini dalyvio vardą.

Be savybių, gali taip pat realizuoti metodus. Metodų kūrimas vyksta panašiai kaip funkcijos apibrėžimas:

Sukurkite savo klases Python kalba

Čia apibrėži metodą registruotis. Vėlgi, atkreipk dėmesį, kad self automatiškai perduodamas kaip parametras metodui, kad pasiektum instanciją. Registracijos metu galėtume pavyzdžiui išspausdinti sėkmingą pranešimą:

Sukurkite savo klases Python'e

Jei iškviesi metodą registruotis, tai atrodys taip:

Sukurti savo klases Python'iame

Čia tu iškvieji metodą instancijoje dalyvis, kas suteikia grįžtamąją informaciją apie registraciją.

Galiausiai galime taip pat perduoti parametrus metodams, panašiai kaip funkcijoms. Pavyzdžiui, galėtume turėti metodą atsisakyti, kuris tikisi parametro priešlaikiniam atsisakymui:

Sukurti savo klases Python'e

Čia tu analizuoji, ar dalyvis nori atsisakyti anksčiau, ir pateiki atitinkamą pranešimą.

ScreanShot_320

Tai rodo, kaip interaktyvios tavo klasės ir metodai gali būti ir kaip jie reaguoja į įvestis.

Baigdamas turėtume dar kartą apibendrinti pagrindinius principus, kuriuos išmokome. Klasių apibrėžimas apima atributų ir metodų apibrėžimą, kurie yra svarbūs atitinkamiems objektams. Konstruktorius __init__ yra esminis, kad nustatytum atributus kuriant objektą.

Santrauka – Sukurti ir naudoti savo klases Python'e

Supratęs ir taikydamas šiuos pagrindinius principus, gali kurti galingas ir lanksčias programas Python'e. Gali kurti klases, kurios kapsuliuoja specifines funkcijas ir savybes, kad programavimas būtų patogesnis ir efektyvesnis.

Dažnai užduodami klausimai

K kaip apibrėžti klasę Python'e?Naudok raktažodį class, po kurio eina klasės pavadinimas ir dvitaškis.

Koks yra __init__ konstruktoriaus tikslas?Jis naudojamas inicializavimams kuriant objektą.

Kaip pasiekti objekto savybes?Naudok taško operatorių, po kurio eina savybės pavadinimas, pvz., objektas.savybė.

Ar galėčiau perduoti kelis parametrus metodui?Taip, gali apibrėžti metodus, kurie priima kelis parametrus.

Ar galėčiau naudoti funkcijas savo klasėse?Taip, metodai nėra niekas kito, kaip tik funkcijos, susietos su klase.