Python Language
Metodöverskridande
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.