La documentazione di Python 2 dice che la funzione super()"restituisce un oggetto proxy che delega le chiamate di metodo a una classe di tipo padre o fratello".Che cos'è una classe di pari livello in Python?
Le domande:
- Che è una classe di pari livello in Python?
- Come si delega una chiamata di metodo a una classe di pari livello?
La mia presunzione era che un fratello per una data classe è una classe che eredita dallo stesso genitore. Ho redatto il seguente codice per vedere come una chiamata al metodo può essere delegata a un fratello, ma non ha funzionato. Cosa faccio o capisco male?
Non ho tempo di scrivere una risposta completa, ma penso che i documenti si riferiscano all'ereditarietà multipla. Se la classe C eredita sia da A che da B, potresti considerare A e B come "fratelli" in un certo senso. 'super()' chiama nel corpo di A su un'istanza di C delegherà a B. Vedi [questa domanda] (http://stackoverflow.com/questions/3277367/how-does-pythons-super-work-with -multiple-inheritance) per il low-down. –
La risposta accettata a questa domanda qui spiega i dettagli di come 'super()' può effettivamente chiamare le classi genitore ma anche fratello: http://stackoverflow.com/questions/5033903/python-super-method-and-calling-alternatives –
@SimeonVisser, ho visto quella domanda, anche recitato. Non dà una risposta chiara a ciò che è una classe di fratello. Questa domanda è correlata a quella, ma chiaramente non è un duplicato. – golem