Uvod u nasljeđivanje Pythona

Python, koji se može pohvaliti multi-paradigmnim mogućnostima, očito je prilagođen objektno orijentiranom stilu programiranja. I nijedan jezik ne može biti dovoljno smiješan da zahtijeva objektno orijentiranu metodologiju bez pružanja podrške za nasljeđivanje, uključujući python. Python pruža izrazito jedinstven okus nasljeđivanja, omogućujući izuzetno snažne operacije koje nismo vidjeli prije. Iako dolazi s nekim ograničenjima, na primjer, trenutno, sigurnost kroz opseg za članove klase postiže se samo konvencijom i nije svojstveno jeziku. Članovi koji su proglašeni privatnim zapravo su javno dostupni s nekim izmjenama.

Sintaksa klase

Sintaksa koja definira izvedenu klasu kada treba naslijediti jednu ili više osnovnih klasa je sljedeća:

class derivedClassName(baseClassName(, …)):


Kao što je prikazano, izvedena klasa određuje popis osnovnih razreda klase odvojen zarezom iz naslova definicije klase.

Klasa Kuhinja

Započnimo s definiranjem osnovne klase koja se koristi za sve naše primjere:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

Prikazana baza definira predložak predmeta koji se koristi za definiranje kuhinja i bilježenje da li je to kuhana kuhinja ili ne. Također ima konstruktor koji se koristi za prihvaćanje vrsta kuhinje. Kasnije se stvara objekt tipa 'kuhani'.

Vrste nasljeđivanja u Pythonu

Postoje uglavnom dvije vrste nasljeđivanja, čija kombinacija daje svaku drugu vrstu.

1. Pojedinačno nasljeđivanje: Jedna osnovna klasa nasljeđuje jednu izvedenu klasu. Ovo je najjednostavnija vrsta nasljeđivanja. Također minimalni mogući. Izvedena klasa automatski poziva konstruktora osnovne klase.

2. Višestruko nasljeđivanje: više baznih klasa nasljeđenih od jedne izvedene klase. Konstruktori osnovne klase pozivaju se redom po kojem su klase izvedene.

Izvedene vrste nasljeđivanja

Kombinacija gore navedena dva oblika nasljeđivanja može dovesti do sljedećih vrsta nasljeđivanja:

1. Hijerarhijsko nasljeđivanje: Jedna osnovna klasa naslijeđena iz više izvedenih klasa. Svaka izvedena klasa funkcionirat će neovisno, ali objekti dijele varijable klase u različite klase.

2. Nasljeđivanje na više razina: Derivirana klasa koja služi kao osnovna klasa za drugu izvedenu klasu. U ovom se slučaju rekurzivno pozivaju konstruktori bazne klase.

3. Hibridno nasljeđivanje: kombinacija više primjera gore spomenutih vrsta nasljeđivanja. To bi moglo dovesti do bilo kakve zamislive kombinacije nastave.

Primjeri nasljeđivanja Pythona

Ispod su primjeri nasljeđivanja Pythona:

1. Pojedinačno nasljeđivanje

Napravimo klasu koja se zove Indijska kuhinja koja nasljeđuje klasnu kuhinju.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Kao što je prikazano u novoj klasi, kreiran je indian_cusine koji prihvaća parametar tipa i poziva parametar konstruktora osnovne klase, prolazeći parametar. Dodatno stvara novo mjesto varijable objekta . Koristi se samo u izvedenoj klasi i nije vidljivo objektima osnovne klase.

2. Hijerarhijsko nasljeđivanje

Napravimo klasu koja se zove ItalianCuisine koja nasljeđuje klasnu kuhinju:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Kao što je prikazano u novoj klasi, stvoren je italian_cusine koji prihvaća parametar tipa i poziva parametar konstruktora osnovne klase, prolazeći parametar. Dodatno stvara novo mjesto varijable objekta . Koristi se samo u izvedenoj klasi i nije vidljivo objektima osnovne klase. Budući da dvije klase, indian_cusines i italian_cuisine nasljeđuju kuhinju, postoji hijerarhijska baština.

3. Višestruko nasljeđivanje

Napravimo klasu koja se zove FineDineCuisine koja nasljeđuje iz više klasa.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

Nova klasa fine_dine_cuisine, nasljeđuje od indian_cuisine i italian_cuisine, nasljeđujući njihove parametre. Prihvaća vrstu parametara, mjesto i veličinu_ veličine. Vrsta i mjesto daju se kao argumenti konstruktorima osnovne klase. part_size je novi parametar objekta koji se ne dijeli s osnovnim klasama.

Napomena o Dijamantnom nasljeđivanju:

Budući da i indijska kuhinja i talijanska kuhinja nasljeđuju kuhinju iz klase, to je klasičan slučaj nasljeđivanja dijamanata, gdje su za izvedenu klasu izravno / neizravno prisutni višestruki primjeri osnovne klase. U većini jezika, poput c ++, to uzrokuje problem ili se koriste apstraktne klase. Python, s druge strane, navodi kako je riječ o vlastitom inovativnom rješenju. On nasljeđuje uobičajene metode i atribute samo jednom dajući prednost razredima redoslijedom nasljeđivanja. Dakle, budući da se kuhinja nasljeđuje dva puta, prednost se daje indijanskoj kuhinjskoj verziji kuhinje, kao što je prije naslijeđena.

Napomena o članovima klase:

Svaki atribut definiran unutar definicije klase, ali ne unutar funkcije, postaje atribut klase i dijeli se na sve instance klase. Prema tome, ako jedan objekt promijeni bilo koji od ovih atributa klase, promjene su vidljive svim ostalim instancama (bilo da se radi o istom predmetu klase ili izvedenom predmetu klase). Stoga budite oprezni dok upotrebljavate atribute klase koji nisu prisutni ni u jednoj definiciji metode.

Zaključak - Nasljeđivanje Pythona

Python je još jednom definirao vrlo fleksibilan, susretljiv i moćan za korištenje kada je objektno orijentirana paradigma poželjna ruta. To je definitivno koncept koji svi mogu koristiti i trebali bi imati ispod pojasa. Ti se koncepti koriste za formiranje građevnih blokova svakog skalabilnog i održivog dijela softvera.
S ovim osnovnim uvodom nasljeđivanja u pythonu, možete ići naprijed i ciljati izjave o stvarnim problemima i vidjeti koliko ste dobro dizajna u stanju smisliti.

Preporučeni članci

Ovo je vodič za nasljeđivanje u Pythonu. Ovdje ćemo raspravljati o uvodu, sintaksi i vrstama nasljeđivanja u Pythonu, zajedno s različitim primjerima i njegovom implementacijom koda. Možete i pregledati naše druge predložene članke -

    1. Nasljeđivanje u Javi
    2. Što je nasljeđivanje u programiranju?
    3. Nasljeđivanje u C #
    4. Prevladavanje u Javi
    5. Nasljeđivanje u PHP-u
    6. Izjava apstraktne klase u C # s primjerom

Kategorija: