Despre directorul python

tip - Tipul de la care se începe căutarea obiectului proxy. -py3.0 Anterior, atributul era necesar.

obj-or-type - Dacă nu este specificat, un obiect mediator nelegat este returnat. Dacă atributul este un obiect, va fi primit un intermediar pentru a obține metoda obiectului pentru care instanța (obj, type) returnează True. Dacă atributul este un tip, va fi primit un intermediar pentru a obține metoda din clasa pentru care issubclass (subtip, type) returnează True.







Folosit pentru a accesa implementările de bază ale metodelor moștenite suprapuse în clasa de moștenire.

Ordinea căutării metodei este aceeași ca și pentru getattr (). numai tipul este ignorat: tipul are atributul __mro__. în care este specificată ordinea căutării metodelor, folosită ca getattr (). și super (). Atributul este dinamic și se poate schimba pe măsură ce ierarhia de moștenire este actualizată.

Cazurile tipice de utilizare a lui super ()

1. În ierarhiile cu o moștenire unică, se utilizează pentru a se referi la clasele părinte, astfel încât să nu se precizeze în mod explicit numele acestora, acest lucru simplifică suportul de cod în viitor. Acest tip de utilizare are rude în alte limbi de programare.







2. A doua opțiune este utilizată pentru a susține moștenirea multiplă comună într-un mediu dinamic. Varianta este unică pentru Python și lipsește în limbile statice compilate sau care susțin numai moștenirea singulară. Ea face posibilă gestionarea buclelor diamante (vezi problema romboss), în care mai multe clase de bază specifică o implementare a metodei cu același nume. Regulile bune de proiectare impun ca în toate cazurile metoda să aibă aceeași semnătură (deoarece ordinea apelurilor este determinată în timpul execuției, deoarece este specificată când ierarhia este schimbată și deoarece lanțul poate avea membri necunoscuți înainte moment de execuție).

Funcția este implementată ca parte a procesului de legare în cazul permisiunilor explicite de atribute printr-un punct, cum ar fi super () .__ getitem __ (nume). Acest lucru se face prin implementarea propriului __getattribute __ (). folosit pentru a găsi clase într-o ordine previzibilă, luând în considerare moștenirea multiplă partajată. Prin urmare, super () nu acceptă permisiunea indirectă utilizând instrucțiuni sau instrucțiuni, de exemplu, super () [name].


Rețineți că puteți utiliza o funcție cu două argumente, nu numai în metode.

Fără argumente, funcția funcționează numai în interiorul definiției clasei: compilatorul este necesar pentru a identifica clasa și a accesa metodele obiectului detaliat.

Notă pentru Python 2
Funcția funcționează numai cu clasele noului stil (evident moștenite de la obiect).

Sinonime pentru căutare: super







Articole similare

Trimiteți-le prietenilor: