strategy software patterns pattern patrones faif diseño python design-patterns

python - software - strategy pattern django



patrones de diseño de pitón (6)

Estoy buscando recursos que den ejemplos de mejores prácticas, patrones de diseño y los principios SOLID utilizando Python.



Algo que puedes usar para simplificar tu código cuando llamas atributos a objetos que podrían o no existir es usar el Patrón de Diseño de Objeto Nulo (al cual fui introducido en el Libro de Cocina de Python ).

A grandes rasgos, el objetivo con los objetos nulos es proporcionar un reemplazo "inteligente" para el tipo de datos primitivo a menudo utilizado None en Python o Null (o punteros nulos) en otros idiomas. Estos se usan para muchos propósitos, incluido el caso importante en el que un miembro de algún grupo de elementos similares es especial por alguna razón. En la mayoría de los casos, esto da como resultado declaraciones condicionales para distinguir entre elementos ordinarios y el valor nulo primitivo.

Este objeto simplemente come la falta de error de atributo y puedes evitar comprobar su existencia.

No es más que

class Null(object): def __init__(self, *args, **kwargs): "Ignore parameters." return None def __call__(self, *args, **kwargs): "Ignore method calls." return self def __getattr__(self, mname): "Ignore attribute requests." return self def __setattr__(self, name, value): "Ignore attribute setting." return self def __delattr__(self, name): "Ignore deleting attributes." return self def __repr__(self): "Return a string representation." return "<Null>" def __str__(self): "Convert to a string and return it." return "Null"

Con esto, si haces Null("any", "params", "you", "want").attribute_that_doesnt_exists() no explotará, sino que se convertirá silenciosamente en el equivalente de un pass .

Normalmente harías algo como

if obj.attr: obj.attr()

Con esto, solo haces:

obj.attr()

y olvídate de eso. Tenga en cuenta que el uso extensivo del objeto Null puede ocultar errores en su código.




También puede leer este article (seleccione el archivo .pdf), que trata sobre los patrones de diseño en lenguajes orientados a objetos dinámicos (es decir, Python). Para citar la página:

Este documento explora cómo los patrones del libro "Gang of Four", o "GOF", como se le suele llamar, aparecen cuando se abordan problemas similares usando un lenguaje de programación dinámico, de orden superior orientado a objetos. Algunos de los patrones desaparecen, es decir, son compatibles directamente con las características del lenguaje, algunos patrones son más simples o tienen un enfoque diferente, y algunos están esencialmente sin cambios.


Tipo

>>> import this

en una consola de Python.

Aunque esto generalmente se trata como una broma (¡excelente!), Contiene un par de axiomas válidos específicos de Python.