Qual è il motivo storico per cui Python utilizza il doppio underscore per i membri Class Private

8

In python una funzione o una variabile privata del modulo è chiamata _foo . Se è privato di una classe è nomi __foo , I meccanismi alla base di come questi lavori sono diversi, tuttavia questo è di scarsa importanza per la domanda.

Perché durante la progettazione del linguaggio Python c'erano i caratteri di doppia sottolineatura scelti per i membri privati della classe? Perché non un singolo trattino basso, come per il modulo privato? Perché non qualche altro personaggio che è più visibile? (Differenziare tra _ e __ è difficile)

Sono sicuro che ci sia un po 'di storia qui, ma ho difficoltà a trovarlo, perché tutto quello che trovo sono tutorial che mi dicono cosa significa, piuttosto che perché è così.

    
posta Lyndon White 08.02.2014 - 16:26
fonte

1 risposta

16

Python Enhancement Proposal (PEP) 8 spiega il significato previsto dietro nomi single e double-underscore , tra le altre convenzioni. Come molti dei primi PEP, rappresenta le preferenze di Guido van Rossum e, come riconosciuto Dictator Benevolent di Python per la vita, le sue preferenze sono generalmente seguite dalla comunità Python.

L'uso di caratteri di sottolineatura doppia per indicare parole "magiche" va almeno indietro rispetto al preprocessore C, che usava quella convenzione a partire dagli anni '70 ( eg , __FILE__ , __LINE__ ). Lo ha fatto perché non c'erano simboli off-limits per il preprocessore, quindi uno schema di denominazione usato raramente (più caratteri di sottolineatura e maiuscole) ha praticamente garantito la mancanza di conflitti.

    
risposta data 09.02.2014 - 23:29
fonte

Leggi altre domande sui tag