Python tiene sus propios modismos de diseño. Algunos de los patrones estándar se aplican, otros no. Algo así como la estrategia o las fábricas tienen soporte en el idioma que los hace transparentes.
Por ejemplo, con los tipos de primera clase, cualquier cosa puede ser una fábrica. No es necesario un tipo de fábrica, puede usar la clase directamente para construir cualquier objeto que desee.
Básicamente, Python tiene sus propios modismos de diseño que son algo diferentes en gran parte porque es muy dinámico y tiene capacidades de introspección increíbles.
Ejemplo:
x = list
my_list = x(range(0,5)) #creates a new list by invoking list's constructor
Al asignar un tipo de clase a un objeto invocable puede eliminar esencialmente cualquier tipo 'fábrica' en el código. Solo te quedan callables que producen objetos que deben ajustarse a algunas convenciones.
Además, hay patrones de diseño en Python que simplemente no se pueden representar de manera eficiente en otros lenguajes de tipo estático. Las metaclases y los decoradores de funciones son buenos ejemplos de esto.
No 'aparentemente': es algo malo escribir en el Idioma A como si fuera el Lenguaje B '. Independientemente de cuál es cuál. Escribir Python en Perl puede ser igual de malo. –
Los propios patrones de diseño están destinados a ser independientes del idioma: algunos textos pueden usar un lenguaje específico para discutir implementaciones, aunque los patrones están destinados a estar en un nivel diferente de abstracción. – Geoglyph
Ver http://stackoverflow.com/questions/127377/programming-languages-and-design-patterns –