Piton

Nasljeđivanje Pythona

Nasljeđivanje Pythona

Python je objektno orijentirani programski jezik. U objektno orijentiranom programskom jeziku stvaramo klase i izvodimo predviđenu funkcionalnost. Nasljeđivanje je temeljna značajka objektno orijentiranih programskih jezika. Nasljeđivanje se može definirati kao sposobnost jedne klase da naslijedi sve funkcije i svojstva druge klase. Nasljeđivanje u osnovi omogućuje proširivanje svojstava postojeće klase. Nasljeđivanje se temelji na dva glavna pojma:

  1. Roditeljska klasa ili osnovna klasa
  2. Podređeni razred ili izvedeni razred

Roditeljska klasa je klasa koja omogućuje nasljeđivanje ostalih klasa. Naziva se i osnovnom klasom. Klasa Child ili izvedena klasa je ona klasa koja nasljeđuje sva svojstva i funkcije druge klase. Nasljeđivanje promiče nekoliko prednosti, t.j.e., to je predstavljanje fenomena nasljeđivanja u stvarnom svijetu. Potiče ponovnu upotrebu koda. Ako je funkcija definirana u jednoj klasi, druga klasa može naslijediti ovu klasu i koristiti sve postojeće funkcije. Za obavljanje sličnih zadataka nije potrebno iznova i iznova pisati isti kod. Nasljeđivanje se primjenjuje na više razina. Na primjer, ako se klasa B nasljeđuje od A, a klasa C nasljeđuje od klase B, tada klasa C ima sva svojstva klase B i klasa A. Sintaksa nasljeđivanja je sljedeća:

Klasa roditelja:
Detalji implementacije nadređene klase
razred ChildClass:
Pojedinosti o provedbi klase djeteta

Iako podređena klasa ima pristup svim značajkama i funkcijama roditeljske klase, ona može dodati i svoje nove značajke i funkcije.

Ovaj članak opisuje i pokriva sve aspekte nasljeđivanja Pythona.

Implementacija nasljeđivanja u Pythonu

Nasljeđivanje se može primijeniti u brojnim situacijama. Pretpostavimo da gradite softverski sustav za sveučilište. Može se sastojati od više dionika poput učenika, nastavnika, osoblja itd. Dakle, svaka osoba ima ime, dob, e-poštu i druga uobičajena svojstva. Nije potrebno zasebno deklarirati sva svojstva u svakoj klasi. Možemo stvoriti klasu osobe, a sve klase dionika mogu naslijediti sva uobičajena svojstva i funkcije iz klase osobe. U ovom slučaju nema potrebe za ponovnim upisivanjem zajedničkih svojstava u svaku klasu. Slično tome, možemo uzeti u obzir klasu životinja. Na ovom svijetu postoje stotine vrsta životinja. Sve životinje jedu, spavaju i imaju neke vrste. Ovaj se koncept također može primijeniti nasljeđivanjem.

Razmotrimo životinju kao super klasu i provedimo nasljeđe. U donjem primjeru stvorili smo jednu klasu životinja. Klasa životinja je roditeljska klasa. Štoviše, stvorili smo klase pasa i mačaka koje nasljeđuju svojstva i funkcije klase životinja. Ključna riječ pass koristi se u podređenoj klasi kada ne moramo implementirati proširenu funkcionalnost u podređenoj klasi.

#kreiranje roditeljske klase
razred Životinje:
#inicijalizacija funkcija
#inicijalizacija imena životinje i vrste vrste
def __init __ (self, name, specie_type):
sebe.ime = ime
sebe.specie_type = specie_type
#a funkcija za ispis imena životinje
def ime ispisa (samo):
print ("Ime životinje je:", samo.Ime)
#a funkcija za ispis vrste vrste životinja
def printspecie (self):
print ("Vrsta vrste je:", self.specie_type)
#stvaranje klase pasa kao klase djeteta klase životinja
razred pas (životinja):
# bez proširenja ili preinake
proći
#now klasa pasa ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase pas
dogObj = Pas ("Pas", "mesojed")
pasObj.Naziv ispisa()
pasObj.printspecie ()
#stvaranje klase mačaka kao klase djece klase životinja
razred Mačka (životinja):
#funkcija inicijalizacije klase mačaka
def __init __ (samo):
#pozivanje i korištenje funkcije inicijalizacije klase životinja
Životinja.__init __ (ja, "mačka", "mesožder sisavac")
#now klasa mačaka ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase mačaka
catObj = Mačka ()
mačkaObj.Naziv ispisa()
mačkaObj.printspecie ()

Izlaz

The "Životinja.__init __ (ja, "mačka", "mesožder sisavac") " poziv je funkcija inicijalizacije klase Animal.

Funkcija super ()

Python pruža ugrađenu super () funkciju za nasljeđivanje svih svojstava i funkcija roditeljske klase. Kada koristimo funkciju super (), tada nije potrebno spominjati ime roditeljske klase kao što smo to činili u "Životinja.__init __ (ja, "mačka", "mesožder sisavac") " ali funkcija super () automatski usmjerava na roditeljsku klasu. Upotrijebimo super funkciju.

#kreiranje roditeljske klase
razred Životinje:
#inicijalizacija funkcija
#inicijalizacija imena životinje i vrste vrste
def __init __ (self, name, specie_type):
sebe.ime = ime
sebe.specie_type = specie_type
#a funkcija za ispis imena životinje
def ime ispisa (samo):
print ("Ime životinje je:", samo.Ime)
#a funkcija za ispis vrste vrste životinja
def printspecie (self):
print ("Vrsta vrste je:", self.specie_type)
#stvaranje klase pasa kao klase djeteta klase životinja
razred pas (životinja):
# koristeći super () funkciju
def __init __ (self, name, specie_type):
super().__init __ (ime, vrsta_tipa)
#now klasa pasa ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase pas
dogObj = Pas ("Pas", "mesojed")
pasObj.Naziv ispisa()
pasObj.printspecie ()
#stvaranje klase mačaka kao klase djece klase životinja
razred Mačka (životinja):
#funkcija inicijalizacije klase mačaka
# koristeći super () funkciju
def __init __ (self, name, specie_type):
super().__init __ (ime, vrsta_tipa)
#now klasa mačaka ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase mačaka
catObj = Mačka ("mačka", "mesožder sisavac")
mačkaObj.Naziv ispisa()
mačkaObj.printspecie ()

Izlaz

Sad ćemo dodati još neke funkcionalnosti u dječjim razredima. Svaka klasa nasljeđuje zajednička svojstva i funkcije od roditeljske klase, ali podređena klasa može imati neku dodatnu klasu koja je namijenjena ovoj određenoj klasi. Ajmo sada stvoriti neka dodatna svojstva i funkcije u klasi pasa i mačaka.

#kreiranje roditeljske klase
razred Životinje:
#inicijalizacija funkcija
#inicijalizacija imena životinje i vrste vrste
def __init __ (self, name, specie_type):
sebe.ime = ime
sebe.specie_type = specie_type
#a funkcija za ispis imena životinje
def ime ispisa (samo):
print ("Ime životinje je:", samo.Ime)
#a funkcija za ispis vrste vrste životinja
def printspecie (self):
print ("Vrsta vrste je:", self.specie_type)
#stvaranje klase pasa kao klase djeteta klase životinja
razred pas (životinja):
# koristeći super () funkciju
#pet ime je novo dodana funkcionalnost
def __init __ (self, name, specie_type, pet_name):
super().__init __ (ime, vrsta_tipa)
sebe.pet_name = pet_name
#stvaranje nove funkcije
def printpetname (samo):
print ("Ime kućnog ljubimca je:", samo.ime ljubimca)
#now klasa pasa ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase pas
dogObj = Pas ("Pas", "mesojed", "Max")
pasObj.Naziv ispisa()
pasObj.printspecie ()
pasObj.printpetname ()
#stvaranje klase mačaka kao klase djece klase životinja
razred Mačka (životinja):
#funkcija inicijalizacije klase mačaka
# koristeći super () funkciju
#dodavanje svojstava hrane i imena kućnih ljubimaca
def __init __ (samo, ime, vrsta, vrsta, hrana, ime_ljubazni):
super().__init __ (ime, vrsta_tipa)
sebe.hrana = hrana
sebe.pet_name = pet_name
#new funkcija za pristup informacijama o hrani
def printfood (samo):
print ("Mačka voli:", samostalno.hrana)
# nova funkcija za ime kućnog ljubimca
def printpetname (samo):
print ("Ime kućnog ljubimca je:", samo.ime ljubimca)
#now klasa mačaka ima pristup svim funkcijama i svojstvima klase životinja
#kreiranje objekta klase mačaka
catObj = Mačka ("mačka", "mesožder sisavac", "keks", "tratinčica")
mačkaObj.Naziv ispisa()
mačkaObj.printspecie ()

Izlaz

Prevladavajuće funkcije

Nadjačavanje funkcije važan je pojam u nasljeđivanju. Funkcija se naziva nadjačana funkcija ako je ime funkcije isto u roditeljskim i podređenim razredima, ali je implementacija ili funkcionalnost funkcije različita u svakoj klasi. Pogledajmo primjer nadjačane funkcije u klasi Animal. U donjem primjeru imamo funkciju prehrane u razredima životinja, kao i u razredima djece (pas i mačka). Ime funkcije je isto u razredima, ali je implementacija drugačija.

#kreiranje roditeljske klase
razred Životinje:
def jesti (samo):
print ("Sve životinje jedu hranu")
#creating object
animalObj = Animal ()
#calling function
životinjaObj.jesti()
#creating class pasa
razred pas (životinja):
def jesti (samo):
print ("Pas jede meso")
#creating object
dogObj = Pas ()
#calling function
pasObj.jesti()
razred Mačka (životinja):
def jesti (samo):
print ("Mačka jede kekse i neku posebnu hranu")
#creating object
catObj = Mačka ()
#calling function
mačkaObj.jesti()

Izlaz

Zaključak

Nasljeđivanje je jedan od temeljnih koncepata objektno orijentiranih programskih jezika. Korištenjem nasljeđivanja stvaramo podređene klase koje nasljeđuju sve funkcije i svojstva nadređene klase. Nasljeđivanje potiče ponovnu upotrebljivost koda. Ovaj članak na primjerima objašnjava nasljeđivanje u Pythonu.

Top 5 ergonomskih proizvoda za računalni miš za Linux
Uzrokuje li dugotrajno korištenje računala bolove u zapešću ili prstima? Patite li od ukočenih zglobova i stalno se morate rukovati? Osjećate li goruć...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Zamijenite svoje tipke miša različito za različiti softver pomoću X-Mouse Button Control
Možda vam treba alat koji bi mogao promijeniti kontrolu miša sa svakom aplikacijom koju koristite. Ako je to slučaj, možete isprobati aplikaciju pod n...