Sök…


Grundläggande metodöverskridande

Här är ett exempel på grundläggande åsidosättande i Python (för tydlighetens och kompatibilitetens skull med både Python 2 och 3, med ny stilklass och print med () ):

class Parent(object):
    def introduce(self):
        print("Hello!")

    def print_name(self):
        print("Parent")
    
    
class Child(Parent):
    def print_name(self):
        print("Child")
    
    
p = Parent()
c = Child()

p.introduce()
p.print_name()

c.introduce()
c.print_name()

$ python basic_override.py 
Hello!
Parent
Hello!
Child

När Child skapas ärver den metoderna för Parent . Detta betyder att alla metoder som förälderklassen har, barnklassen också kommer att ha. I exemplet definieras introduce för Child eftersom den är definierad för Parent , trots att den inte definieras uttryckligen i klassdefinitionen av Child .

I det här exemplet sker det åsidosättande när Child definierar sin egen metod för print_name . Om den här metoden inte deklarerades, skulle c.print_name() ha skrivit ut "Parent" . Child har dock åsidosatt Parent definition av print_name , och nu när man ringer c.print_name() ordet "Child" ut.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow