Obtengo un dict para iniciar una persona de clase. hay un campo en persona: 'nombre'. El campo "nombre" es opcional, lo que significa que si el dict no tiene el elemento "nombre", entonces no hay un valor de "nombre" de la persona. Yo uso métodos getter para obtener el atributo de instancia, pero arrojará un error si no hay un valor 'name'. No sé si hay algún buen estilo de programación para mejorar mi código. Debido a que python crea un campo de instancia en tiempo de ejecución, no sé cómo usar getter como java.python: error de atributo de instancia
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: Persona instancia no tiene atributo 'nombre'
Como ya has visto en las respuestas, los getters no son "pitónicos", o un buen código python. [Aquí] (http://tomayko.com/writings/getters-setters-fuxors) es un gran artículo sobre por qué es esto. Para resumir el artículo: Java siempre necesita getters/setters porque sin ellos, la refactorización para usarlos es difícil. Con Python, no cambia su interfaz, ya que puede usar [propiedades] (http://docs.python.org/library/functions.html#property). – Darthfett