Viniendo a Python desde Java, me han dicho que las fábricas no son pitónicas. Por lo tanto, estoy buscando
a
la forma de Python para hacer algo como lo siguiente. (Simplifico demasiado mi objetivo para no tener que describir mi programa completo, lo cual es muy complicado).Mover fábricas más allá en Python
Mi secuencia de comandos leerá los nombres de las personas (junto con cierta información sobre ellos) y, a partir de esto, construirá objetos de tipo Persona. Los nombres pueden repetirse, y solo quiero una instancia de Persona por nombre. Estas personas también pueden pertenecer a las subclases Hombre y mujer.
Una forma de hacerlo sería crear una PersonFactory que devuelva a un Hombre o Mujer recién instanciado o una referencia al Hombre/Mujer previamente instanciado con el mismo nombre. El otro sería crear un conjunto de todos los objetos Persona y verificar cada vez la presencia de una Persona con el nombre dado antes de crear un nuevo objeto. Sin embargo, ninguno de los enfoques me parece algo pitónico. El primero parece demasiado engorroso para Python (¿crear una clase completa solo para manejar la creación de otro objeto? ¿De verdad?) Y el segundo se volverá costoso rápidamente, ya que tengo muchos nombres para procesar.
La comprobación de la existencia de una clave en un diccionario no es realmente cara, es O (1). – Amber
Correcto, pasé por alto eso. Gracias, Amber! – chimeracoder
Me estremezco cuando veo el término "pitónico" en este tipo de contexto. Python es solo una herramienta. Use la herramienta para resolver su problema de la mejor manera que sepa cómo hacerlo. Si eso involucra fábricas, que así sea. A tus clientes no les importa si eres "pitónico" o no. –