È ampiamente riconosciuto che le proprietà di Python sono non solo un guaio per aggirare l'errore del passato di esporre pubblicamente i membri dei dati. Ma allora quando Pythonic non usa una proprietà invece di un metodo che non accetta argomenti?
Ad esempio, se stessimo scrivendo la libreria standard Python da zero, sarebbe più Pythonic sostituire dict.items()
con dict.items
? Potremmo anche aggiungere un setter con un comportamento perfettamente intuitivo. Quel si sente sbagliato, ma non posso articolare le regole per quello che è e non è un uso pitonico delle proprietà che squalificherebbe questo uso. Una regola ovvia potrebbe essere che se non c'è un setter ragionevole, le proprietà non dovrebbero essere utilizzate. Questo squalifica dict.values()
e dict.keys()
ma non dict.items()
.
Ovviamente lo stile può essere soggettivo, ma dal momento che è un motto di Python che "Ci dovrebbe essere uno - e preferibilmente solo uno - modo ovvio per farlo.", penso che questa domanda sia ragionevole. Inoltre, proviamo ad attenerci ai PEP e al codice nella libreria standard di Python.