|
Quanto detto in precedenza sono le norme generali della programmazione orientata agli oggetti. Vedremo adesso alcune caratteristiche della programmazione ad oggetti così come è implementata specificamente in Python.
Un elemento importante è che Python non ha un controllo dell'accesso rigoroso e rigido. In linguaggi come il C++ o Java, alcuni metodi o campi sono privati, ed inaccessibili al resto del mondo. Non così in Python: tutti i "membri" (campi e metodi) sono sostanzialmente pubblici, e la protezione dell'accesso è legata alle convenzioni, e alla "buona educazione" del programmatore.
Ci sono dei "blandi" meccanismi di protezione, ma se si è abbastanza determinati si può accedere a qualunque elemento, per quanto "privato" esso sia.
Altri elementi da notare è che c'è una distinzione tra tipi primitivi (o "builtin") e oggetti. Anzi la quantità di builtin è abbastanza ampia: come abbiamo visto ci sono liste e tabelle, oltreché stringhe e file, e molto altro.
Linguaggi come Java hanno escluso l'ereditarietà multipla per non avere un modello a oggetti troppo complesso. Invece Python HA l'ereditarietà multipla, anche se si tratta di una funzionalità che va usata con accortezza e limitazione in quanto è facile abusarne.
Volendo in Python è possibile anche il cosiddetto "operator overloading", anche questo esclusi da Java. Ovvero per le classi la definzione metodi corrispondenti agli operatori: "+", "[ ]", eccetera. Questa funzione non è a mio avviso indispensabile, pertanto non verrà trattata, e l'ereditarietà multipla solamente accennata.
|