una - ¿Cuándo debería usar clases en Python?




poo python 3 (4)

Creo que lo haces bien. Las clases son razonables cuando necesita simular alguna lógica de negocios o procesos difíciles de la vida real con relaciones difíciles. Como ejemplo:

  • Varias funciones con estado compartido
  • Más de una copia de las mismas variables de estado.
  • Para extender el comportamiento de una funcionalidad existente

También te sugiero que veas este video clásico

He estado programando en Python durante aproximadamente dos años; principalmente datos (pandas, mpl, numpy), pero también scripts de automatización y pequeñas aplicaciones web. Estoy tratando de ser un mejor programador y aumentar mi conocimiento de Python y una de las cosas que me molesta es que nunca he usado una clase (aparte de copiar código de matraz aleatorio para pequeñas aplicaciones web). Generalmente entiendo lo que son, pero parece que no puedo entender por qué los necesitaría para una función simple.

Para agregar especificidad a mi pregunta: escribo toneladas de informes automáticos que siempre implican extraer datos de múltiples fuentes de datos (mongo, sql, postgres, apis), realizar una gran cantidad de datos y formateo, escribir los datos en csv / excel / html, envíalo en un correo electrónico. Los scripts van desde ~ 250 líneas hasta ~ 600 líneas. ¿Habría alguna razón para que yo use las clases para hacer esto y por qué?


Depende de su idea y diseño. Si usted es un buen diseñador, los OOP saldrán naturalmente en forma de varios patrones de diseño. Para un procesamiento de nivel de script simple, los OOP pueden ser generales. Simplemente considere los beneficios básicos de los POO como reutilizables y extensibles y asegúrese de que sean necesarios o no. Las OOP hacen que las cosas complejas sean más simples y complejas. Simplemente mantiene las cosas simples de cualquier manera usando OOP o no usando OOP. cualquiera que sea más simple usar eso.


Siempre que necesite mantener un estado de sus funciones y no se pueda lograr con generadores (funciones que rinden en lugar de regresar). Los generadores mantienen su propio estado.

Si desea anular cualquiera de los operadores estándar , necesita una clase.

Siempre que use un patrón de visitante, necesitará clases. Cualquier otro patrón de diseño se puede lograr de manera más efectiva y limpia con generadores, gestores de contexto (que también se implementan mejor como generadores que como clases) y tipos de POD (diccionarios, listas y tuplas, etc.).

Si desea escribir código "pitónico", debe preferir administradores de contexto y generadores sobre las clases. Estará más limpio.

Si desea ampliar la funcionalidad, casi siempre podrá lograrlo con contención en lugar de herencia.

Como cada regla, esto tiene una excepción. Si desea encapsular la funcionalidad rápidamente (es decir, escribir código de prueba en lugar de código reutilizable a nivel de biblioteca), puede encapsular el estado en una clase. Será simple y no necesitará ser reutilizable.

Si necesita un destructor de estilo C ++ (RIIA), definitivamente NO desea usar clases. Quieres administradores de contexto.


Una clase define una entidad del mundo real. Si está trabajando en algo que existe individualmente y tiene su propia lógica que es independiente de los demás, debe crear una clase para ello. Por ejemplo, una clase que encapsula la conectividad de la base de datos.

Si este no es el caso, no es necesario crear clase







oop