logo

Metodo nepaisymas Python

Būtina sąlyga: Paveldėjimas Python

Metodo nepaisymas – tai bet kurios objektinės programavimo kalbos gebėjimas, leidžiantis poklasiui arba antrinei klasei pateikti konkretų metodo įgyvendinimą, kurį jau teikia viena iš jos superklasių arba pirminių klasių. Kai poklasyje esantis metodas turi tą patį pavadinimą, tuos pačius parametrus arba parašą ir tą patį grąžinimo tipą (arba potipį) kaip ir jo superklasės metodas, tada sakoma, kad poklasyje esantis metodas nepaisyti metodas super-klasėje.



overriding-in-python

Vykdomo metodo versija bus nustatyta pagal objektą, kuris naudojamas jį iškviesti. Jei metodui iškviesti naudojamas pagrindinės klasės objektas, bus vykdoma pagrindinės klasės versija, tačiau jei metodui iškviesti naudojamas poklasio objektas, bus vykdoma antrinės klasės versija. Kitaip tariant, tai yra objekto tipas, į kurį kalbama (ne nuorodos kintamojo tipas), kuris nustato, kuri nepaisyto metodo versija bus vykdoma.

Pavyzdys:








# Python program to demonstrate> # method overriding> > > # Defining parent class> class> Parent():> > ># Constructor> >def> __init__(>self>):> >self>.value>=> 'Inside Parent'> > ># Parent's show method> >def> show(>self>):> >print>(>self>.value)> > # Defining child class> class> Child(Parent):> > ># Constructor> >def> __init__(>self>):> >self>.value>=> 'Inside Child'> > ># Child's show method> >def> show(>self>):> >print>(>self>.value)> > > # Driver's code> obj1>=> Parent()> obj2>=> Child()> > obj1.show()> obj2.show()>

>

>

Išvestis:

 Inside Parent Inside Child>

Metodo nepaisymas naudojant kelių ir kelių lygių paveldėjimą

  1. Daugkartinis paveldėjimas: Kai klasė yra išvesta iš daugiau nei vienos bazinės klasės, ji vadinama daugybiniu paveldėjimu.

    Pavyzdys: Panagrinėkime pavyzdį, kai norime nepaisyti tik vienos pirminės klasės metodo. Žemiau pateikiamas įgyvendinimas.

    modemas vs maršrutizatorius




    # Python program to demonstrate> # overriding in multiple inheritance> > > # Defining parent class 1> class> Parent1():> > ># Parent's show method> >def> show(>self>):> >print>(>'Inside Parent1'>)> > # Defining Parent class 2> class> Parent2():> > ># Parent's show method> >def> display(>self>):> >print>(>'Inside Parent2'>)> > > # Defining child class> class> Child(Parent1, Parent2):> > ># Child's show method> >def> show(>self>):> >print>(>'Inside Child'>)> > > # Driver's code> obj>=> Child()> > obj.show()> obj.display()>

    >

    >

    Išvestis:

     Inside Child Inside Parent2>
    Daugiapakopis paveldėjimas: kai turime vaiko ir anūko ryšį.

    Pavyzdys: Panagrinėkime pavyzdį, kai norime nepaisyti tik vieno vienos iš pirminių klasių metodo. Žemiau pateikiamas įgyvendinimas.




    # Python program to demonstrate> # overriding in multilevel inheritance> > > # Python program to demonstrate> # overriding in multilevel inheritance> > > class> Parent():> > ># Parent's show method> >def> display(>self>):> >print>(>'Inside Parent'>)> > > # Inherited or Sub class (Note Parent in bracket)> class> Child(Parent):> > ># Child's show method> >def> show(>self>):> >print>(>'Inside Child'>)> > # Inherited or Sub class (Note Child in bracket)> class> GrandChild(Child):> > ># Child's show method> >def> show(>self>):> >print>(>'Inside GrandChild'>)> > # Driver code> g>=> GrandChild()> g.show()> g.display()>

    >

    >

    Išvestis:

     Inside GrandChild Inside Parent>

Iškviečiamas tėvų metodas nepaisyto metodo ribose

Pirminės klasės metodai taip pat gali būti iškviesti per nepaisytus metodus. Paprastai tai galima pasiekti dviem būdais.

    Klasės pavadinimo naudojimas: Tėvų klasės metodus galima iškviesti naudojant Parentclassname.method>nepaisyto metodo viduje.

    Pavyzdys:




    simbolis į eilutę

    # Python program to demonstrate> # calling the parent's class method> # inside the overridden method> > > class> Parent():> > >def> show(>self>):> >print>(>'Inside Parent'>)> > class> Child(Parent):> > >def> show(>self>):> > ># Calling the parent's class> ># method> >Parent.show(>self>)> >print>(>'Inside Child'>)> > # Driver's code> obj>=> Child()> obj.show()>

    >

    >

    Išvestis:

     Inside Parent Inside Child>
    Naudojant Super(): Pythonsuper()>funkcija suteikia mums galimybę aiškiai nurodyti pirminę klasę. Iš esmės tai naudinga ten, kur turime vadinti superklasės funkcijas. Jis grąžina tarpinio serverio objektą, kuris leidžia mums nurodyti pirminę klasę „super“.

    1 pavyzdys:




    # Python program to demonstrate> # calling the parent's class method> # inside the overridden method using> # super()> > > class> Parent():> > >def> show(>self>):> >print>(>'Inside Parent'>)> > class> Child(Parent):> > >def> show(>self>):> > ># Calling the parent's class> ># method> >super>().show()> >print>(>'Inside Child'>)> > # Driver's code> obj>=> Child()> obj.show()>

    >

    >

    Išvestis:

     Inside Parent Inside Child>

    2 pavyzdys:

    preity zinta




    # Program to define the use of super()> # function in multiple inheritance> class> GFG1:> >def> __init__(>self>):> >print>(>'HEY !!!!!! GfG I am initialised(Class GEG1)'>)> > >def> sub_GFG(>self>, b):> >print>(>'Printing from class GFG1:'>, b)> > # class GFG2 inherits the GFG1> class> GFG2(GFG1):> >def> __init__(>self>):> >print>(>'HEY !!!!!! GfG I am initialised(Class GEG2)'>)> >super>().__init__()> > >def> sub_GFG(>self>, b):> >print>(>'Printing from class GFG2:'>, b)> >super>().sub_GFG(b>+> 1>)> > # class GFG3 inherits the GFG1 ang GFG2 both> class> GFG3(GFG2):> >def> __init__(>self>):> >print>(>'HEY !!!!!! GfG I am initialised(Class GEG3)'>)> >super>().__init__()> > >def> sub_GFG(>self>, b):> >print>(>'Printing from class GFG3:'>, b)> >super>().sub_GFG(b>+> 1>)> > > # main function> if> __name__>=>=> '__main__'>:> > ># created the object gfg> >gfg>=> GFG3()> > ># calling the function sub_GFG3() from class GHG3> ># which inherits both GFG1 and GFG2 classes> >gfg.sub_GFG(>10>)>

    >

    >

    Išvestis:

     HEY !!!!!! GfG I am initialised(Class GEG3) HEY !!!!!! GfG I am initialised(Class GEG2) HEY !!!!!! GfG I am initialised(Class GEG1) Printing from class GFG3: 10 Printing from class GFG2: 11 Printing from class GFG1: 12>