Perinnöllisyys on tärkeä osa olio-paradigmaa. Periytys tarjoaa koodin uudelleenkäytettävyyden ohjelmalle, koska voimme käyttää olemassa olevaa luokkaa uuden luokan luomiseen sen sijaan, että luomme sen tyhjästä.
Periytymisessä lapsiluokka hankkii ominaisuudet ja voi käyttää kaikkia emoluokkassa määriteltyjä datajäseniä ja toimintoja. Lapsiluokka voi myös tarjota erityisen toteutuksensa pääluokan funktioille. Tässä opetusohjelman osassa keskustelemme perinnöstä yksityiskohtaisesti.
java muuntaa merkki merkkijonoksi
Pythonissa johdettu luokka voi periä perusluokan mainitsemalla kantaluvun suluissa johdetun luokan nimen jälkeen. Harkitse seuraavaa syntaksia periäksesi perusluokan johdettuun luokkaan.
Syntaksi
class derived-class(base class):
Luokka voi periä useita luokkia mainitsemalla ne kaikki hakasulkeissa. Harkitse seuraavaa syntaksia.
Syntaksi
class derive-class(, , ..... ):
Esimerkki 1
class Animal: def speak(self): print('Animal Speaking') #child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') d = Dog() d.bark() d.speak()
Lähtö:
dog barking Animal Speaking
Python monitasoinen perintö
Monitasoinen periytyminen on mahdollista pythonissa kuten muissakin oliokielissä. Monitasoinen perintö arkistoidaan, kun johdettu luokka perii toisen johdetun luokan. Ei ole rajoitettua määrää tasoja, joihin asti monitasoinen perintö arkistoidaan pythonissa.
Monitasoisen periytymisen syntaksi on annettu alla.
Syntaksi
class class1: class class2(class1): class class3(class2): . .
Esimerkki
class Animal: def speak(self): print('Animal Speaking') #The child class Dog inherits the base class Animal class Dog(Animal): def bark(self): print('dog barking') #The child class Dogchild inherits another child class Dog class DogChild(Dog): def eat(self): print('Eating bread...') d = DogChild() d.bark() d.speak() d.eat()
Lähtö:
dog barking Animal Speaking Eating bread...
Python Moniperintö
Python tarjoaa meille joustavuuden periä useita perusluokkia aliluokkaan.
Syntaksi usean perinnän suorittamiseksi on annettu alla.
Syntaksi
class Base1: class Base2: . . . class BaseN: class Derived(Base1, Base2, ...... BaseN):
Esimerkki
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(d.Summation(10,20)) print(d.Multiplication(10,20)) print(d.Divide(10,20))
Lähtö:
30 200 0.5
Issubclass(sub,sup) -menetelmä
Issubclass(sub, sup) -menetelmää käytetään määritettyjen luokkien välisten suhteiden tarkistamiseen. Se palauttaa tosi, jos ensimmäinen luokka on toisen luokan alaluokka, ja epätosi muussa tapauksessa.
Harkitse seuraavaa esimerkkiä.
Esimerkki
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(issubclass(Derived,Calculation2)) print(issubclass(Calculation1,Calculation2))
Lähtö:
True False
Isinstance (obj, class) -menetelmä
Isinstance()-menetelmää käytetään objektien ja luokkien välisen suhteen tarkistamiseen. Se palauttaa arvon tosi, jos ensimmäinen parametri eli obj on toisen parametrin eli luokan esiintymä.
Harkitse seuraavaa esimerkkiä.
Esimerkki
class Calculation1: def Summation(self,a,b): return a+b; class Calculation2: def Multiplication(self,a,b): return a*b; class Derived(Calculation1,Calculation2): def Divide(self,a,b): return a/b; d = Derived() print(isinstance(d,Derived))
Lähtö:
True
Menetelmän ohittaminen
Voimme tarjota tietyn emoluokan menetelmän toteutuksen lapsiluokassamme. Kun emoluokan menetelmä on määritelty lapsiluokassa jollain tietyllä toteutuksella, konseptia kutsutaan menetelmän ohitukseksi. Saatamme joutua suorittamaan menetelmän ohituksen tilanteessa, jossa aliluokkaan tarvitaan erilainen ylätason luokan menetelmän määritelmä.
pino ds
Harkitse seuraavaa esimerkkiä menetelmän ohituksen suorittamiseksi pythonissa.
Esimerkki
class Animal: def speak(self): print('speaking') class Dog(Animal): def speak(self): print('Barking') d = Dog() d.speak()
Lähtö:
Barking
Tosielämän esimerkki menetelmän ohittamisesta
class Bank: def getroi(self): return 10; class SBI(Bank): def getroi(self): return 7; class ICICI(Bank): def getroi(self): return 8; b1 = Bank() b2 = SBI() b3 = ICICI() print('Bank Rate of interest:',b1.getroi()); print('SBI Rate of interest:',b2.getroi()); print('ICICI Rate of interest:',b3.getroi());
Lähtö:
Bank Rate of interest: 10 SBI Rate of interest: 7 ICICI Rate of interest: 8
Tietojen abstraktio pythonissa
Abstraktio on tärkeä osa olio-ohjelmointia. Pythonissa voimme myös piilottaa tiedot lisäämällä kaksoisalaviivan (___) etuliitteeksi piilotettavaan määritteeseen. Tämän jälkeen attribuutti ei näy luokan ulkopuolella objektin kautta.
Harkitse seuraavaa esimerkkiä.
Esimerkki
class Employee: __count = 0; def __init__(self): Employee.__count = Employee.__count+1 def display(self): print('The number of employees',Employee.__count) emp = Employee() emp2 = Employee() try: print(emp.__count) finally: emp.display()
Lähtö:
The number of employees 2 AttributeError: 'Employee' object has no attribute '__count'