Generalmente parlando in situazioni di OOP canonico, la regola generale è quella di scrivere le classi con il minimo accesso, se necessario. cioè solo rendere pubblico solo ciò che è necessario, proteggere solo ciò che è necessario, ecc. ecc. (Ci sono delle eccezioni e quello che descrivo non si applica sempre.) FWIW, trovo l'idea di "minimo accesso se necessario" per essere utile in più situazioni canoniche OO C ++ / Java.)
Comunque in Python, non hai rigorosi modificatori di accesso come public , protected , private , ecc. Python ha pseudo protected e pseudo private sotto forma di singolo _ e double __ underscore per i campi e i metodi dell'oggetto.
In più situazioni "OO canoniche" [1] Python, qual è la regola empirica per i modificatori di accesso predefiniti?
La regola empirica è quella di restringere di più (come in C ++ / Java) e qualificare tutti i campi / metodi con __ finché non ci sono requisiti / design / API necessari per renderlo public o protected ?
O la regola generale è iniziare con tutti i tuoi campi / metodi python come public e restringerli se necessario?
Ho visto alcuni utenti che eseguono il default su protected con _ e utilizzano pylint per intercettare l'incapsulamento. Posso anche vedere gli altri che eseguiranno il default su private . E sono sicuro che ce ne sono ancora altri che sono impostati su public .
[1] Uso il termine "OO canonico" per riferirsi a più di ciò che chiamerei teoria / situazioni di programmazione del libro di testo OO. Nella mia esperienza la programmazione reale spesso differisce dalla OO di testo o dalla teoria di programmazione canonica OO.