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.