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.