ho un dict a init una persona di classe. c'è un campo in persona: 'nome'. Il campo 'name' è facoltativo, nel senso che se il dict non ha l'elemento 'name', allora non c'è il valore 'name' della persona. Io uso i metodi getter per ottenere l'attributo di istanza, ma genererà un errore se non c'è un valore 'nome'. Non so c'è qualche buono stile di programmazione per migliorare il mio codice? Poiché python crea un campo istanza in fase di esecuzione, non so come usare getter come java.pitone: Istanza Attributo errore
class Person:
def __init__(self,person_dict):
try:
self.name = person_dict['name']
except Exception:
pass
def getName(self):
return self.name
pdict = {}
p = Person(pdict)
print p.getName()
AttributeError: istanza persona non ha un attributo 'name'
Come avete già visto nelle risposte, getter non sono 'divinatorio', o buon codice python. [Here] (http://tomayko.com/writings/getters-setters-fuxors) è un grande articolo sul perché questo è. Per riassumere l'articolo: Java ha sempre bisogno di getter/setter perché senza di essi, il refactoring per usarli è difficile. Con python, non cambi la tua interfaccia, dato che puoi usare [proprietà] (http://docs.python.org/library/functions.html#property). – Darthfett