Se "esplicito è meglio di implicito", perché non esistono modificatori di accesso espliciti in Python: pubblico, protetto, privato, ecc.?
So che l'idea è che il programmatore sappia cosa fare attraverso un suggerimento: non è necessario usare la "forza bruta". Ma IMO "incapsulamento" o "occultamento dell'informazione" non è solo per tenere fuori le persone, è una questione di organizzazione e struttura: i livelli di sviluppo dovrebbero avere confini e confini auto-definiti, chiaramente delimitati, proprio come fanno i sistemi fisici.
Qualcuno, per favore, può darmi una mano qui con una spiegazione esauriente del motivo per cui le restrizioni di accesso sono implicite piuttosto che esplicite in Python, un linguaggio che altrimenti sembra vicino alla perfezione?
Modifica: finora ho visto 3 risposte proposte e mi sono reso conto che ci sono 2 parti nella mia domanda:
-
Perché non ci sono parole chiave, ad esempio
private def myFunc(): dostuff....
invece di IMO i caratteri di sottolineatura brutti e difficili da digitare. Ma non è questo il punto importante.
-
Ancora più importante:
Perché questi modificatori di accesso sono solo "consigli" o suggerimenti e non applicati. Sarà difficile cambiare dopo? È molto semplice cambiare 'protected' in 'public' - e se hai una catena di eredità complicata che rende difficile, hai un design scarso - il tuo design dovrebbe essere raffinato piuttosto che fare affidamento su una funzione linguistica che rende facile scrivere codice mal strutturato.
Quando i modificatori di accesso vengono applicati, il tuo codice viene automaticamente suddiviso in compartimenti: sai che alcuni segmenti sono fuori portata, quindi non devi gestirli se non quando è necessario. E, se il tuo design non è buono e ti ritrovi a spostare costantemente le cose dentro e fuori dai diversi ambiti, la lingua può aiutarti a ripulire il tuo operato.
Per quanto ami Python, trovo che questo secondo punto sia una grave carenza. E devo ancora vedere una buona risposta per questo.