Come utilizzare l'ereditarietà in Python

April 15

Quando si programma un'attività con complessità moderata, è spesso una buona idea di incorporare i principi di progettazione orientata agli oggetti nel codice. L'ereditarietà è un principio che può consentire di costruire codice snello e specializzato che lavora fuori di basi di codice esistenti. Python supporta sia singola (una classe derivata da una classe) e multiple (una classe derivata da molte classi) ereditarietà.

istruzione

Creare una classe di base

1 Creare una classe di base, che le classi derivate possono chiamare. Assicurarsi che le variabili ei metodi sono perfettamente funzionanti.

2 Quanto segue è un esempio di ciò che una classe con nessuna eredità può apparire come:
class myBaseClass(object):
baseVar = 23
def myFunc:
print 'Bob Dobbs has Slack'

Si noti che, secondo recenti convenzione, al momento di definire una classe che non eredita da eventuali pacchetti utenti, diciamo la classe di ereditare da 'oggetto' di Python di classe.

3 Usare l'interprete Python per assicurarsi che la classe base non ha errori di sintassi. È possibile utilizzare un file per contenere tutta la classe ed eseguire:
Python myBaseClass.pyIf it does, go back and debug.

Utilizzare l'ereditarietà singola o ereditarietà multipla

4 Creare una classe che comprende la classe di base. Questo viene fatto digitando il nome della classe di base tra parentesi sulla prima riga della dichiarazione di classe. La classe derivata può quindi utilizzare le funzioni dalla classe di base, oltre a definire i propri metodi. Un esempio può essere:
class myDerivedClass(myBaseClass):
def derivedFunc:
myFunc
print baseVar

5 Un'istanza e chiamare i metodi della classe derivata dall'esterno della classe:
myDerivedClass.derivedFunc
>>> Bob Dobbs has Slack
23

6 Creare una classe derivata che eredita da più classi con la semplice messa in vendita di classi base sequenziale nelle parentesi che seguono la definizione della classe, separate da virgole:
class myDerivedClass(myBaseClass1, myBaseClass2, myBaseClass3):
#insert your class code here

Consigli e avvertenze

  • Quando si utilizza l'ereditarietà multipla, i nomi ed i metodi di variabile sono utilizzati in preferenza da sinistra a destra nell'ordine in cui si dichiarato le classi base nella tua classe bambino. In altre parole, la classe MyClass (A, B, C), si importare da un primo, secondo B e C ultima.
  • Quando un metodo e variabile di istanza vengono importati nella stessa classe, la variabile avrà la precedenza quando viene chiamato.
  • capitolo di Guido Van Rossum in eredità nel "Introduzione a Python" libero libro fornisce una copertura più approfondita sui modelli di oggetti Python (vedi Risorse).
  • L'articolo di Wikipedia su modelli di progettazione fornisce un punto di ingresso per l'arte della progettazione orientata agli oggetti.
  • Quando si eredita da una classe, il codice per la classe di base devono esistere prima di codificare classe derivata!