Single Responsibility Principle(SRP)
Este principio establece que cada clase debe tener una sola responsabilidad. Enfatiza que una clase debe realizar una función específica y no tener demasiadas razones para cambiar.
Ejemplo: Gestión de la información de los usuarios y envío de notificaciones por correo electrónico.
class UserManager:
def create_user(self, user_data):
# Logic for creating a user
pass
class EmailService:
def send_email(self, email_data):
# Logic for sending an email
pass
Open/Closed Principle(OCP)
Este principio fomenta la extensión de la funcionalidad agregando código nuevo en lugar de modificar el código existente.
Ejemplo: Manejo de diferentes métodos de pago en una aplicación de comercio electrónico.
from abc import ABC, abstractmethod
class PaymentProcessor(ABC):
@abstractmethod
def process_payment(self):
pass
class CreditCardPaymentProcessor(PaymentProcessor):
def process_payment(self):
# Logic for processing credit card payment
pass
class PayPalPaymentProcessor(PaymentProcessor):
def process_payment(self):
# Logic for processing PayPal payment
pass
Liskov Substitution Principle(LSP)
Este principio afirma que los objetos de una clase derivada deben ser sustituibles por objetos de la clase base sin afectar la corrección del programa.
Ejemplo: Manejo de formas geométricas.
class Shape:
def area(self):
pass
class Rectangle(Shape):
def area(self):
return self.width * self.height
class Square(Shape):
def area(self):
return self.side * self.side
Interface Segregation Principle(ISP)
Este principio aconseja dividir las interfaces en otras más pequeñas para evitar obligar a las clases a implementar métodos que no necesitan.
Ejemplo: Interfaces para actualización y visualización de datos.
class UpdateableFeature:
@abstractmethod
def update_feature(self):
pass
class DisplayableFeature:
@abstractmethod
def display_feature(self):
pass
Dependency Inversion Principle(DIP)
Este principio sugiere usar la inyección de dependencia para administrar las dependencias.
Ejemplo: Uso de inyección de dependencia para administrar dependencias.
class OrderProcessor:
def __init__(self, db_connection, email_service):
self.db_connection = db_connection
self.email_service = email_service
Recuerde que la aplicación de SOLID los principios Python debe hacerse de manera flexible según el propósito específico de su proyecto y su comprensión de SOLID y Python.