Hvordan bruke Inheritance i Python

Når du programmerer en oppgave med moderat kompleksitet, er det ofte en god idé å innlemme prinsippene for objektorientert design inn koden din. Arv er et prinsipp som kan tillate deg å bygge strømlinjeformet og spesialiserte kode som fungerer ut av eksisterende codebases. Python støtter både single (en klasse som stammer fra en klasse) og flere (en klasse som stammer fra mange klasser) arv.

Bruksanvisning

Lag en Base Class

1 Lag en base klasse som dine avledet klasser kan ringe. Sørg for at dine variabler og metoder er fullt funksjonell.

2 Følgende er et eksempel på hva en klasse med noen arv kan se slik ut:
class myBaseClass(object):
baseVar = 23
def myFunc:
print 'Bob Dobbs has Slack'

Legg merke til at, ifølge nyere konvensjonen, når du definerer en klasse som arver ikke fra noen bruker pakker, vi forteller klassen å arve fra Python 'objektet' klasse.

3 Bruk Python tolk for å være sikker base klassen har ingen syntaksfeil. Du kan bruke en fil til å inneholde hele klassen og kjør:
Python myBaseClass.pyIf it does, go back and debug.

Bruk enkel arv eller multippel arv

4 Lag en klasse som inkluderer base klasse. Dette gjøres ved å skrive base klassen navn i parentes på den første linjen i klassen din erklæring. Din avledet klasse kan deretter bruke funksjoner fra base klassen, samt definere sine egne metoder. Et eksempel kan være:
class myDerivedClass(myBaseClass):
def derivedFunc:
myFunc
print baseVar

5 Instantiate og kaller metodene fra avledet klasse fra utenfor klassen:
myDerivedClass.derivedFunc
>>> Bob Dobbs has Slack
23

6 Lag en avledet klasse som arver fra flere klasser ved å liste den grunnklasser sekvensielt i parentes etter klassedefinisjonen, atskilt med komma:
class myDerivedClass(myBaseClass1, myBaseClass2, myBaseClass3):
#insert your class code here

Hint

  • Ved bruk av multippel arv, er variabelnavn og metoder som brukes i innstillingen fra venstre til høyre i den rekkefølgen du erklært basen klasser i barnets klasse. Med andre ord, klasse MyClass (A, B, C), vil importeres fra en første, andre B og C sist.
  • Når en metode og instansvariabel er importert inn i samme klasse, vil den variable ha forrang når kalt.
  • Guido Van Rossum kapittel om arv i gratis "Introduksjon til Python" bok gir mer inngående dekning på Python objektmodeller (se Ressurser nedenfor).
  • Wikipedia-artikkel om design patterns gir en inngangsport for kunsten objektorientert design.
  • Når arve fra en klasse, må koden for base klassen eksisterer før du koden din avledet klasse!