Fábrica de clases de Python

Vaibhhav Khetarpal 21 junio 2023
  1. Cómo crear una fábrica de clases en Python
  2. Utilice la palabra clave clase para crear una fábrica de clases en Python
  3. Use la palabra clave tipo para crear una fábrica de clases en Python
Fábrica de clases de Python

Una función simple cuyo propósito es crear una clase y devolverla se conoce como Class Factory. Una fábrica de clases, siendo uno de los patrones poderosos, se utiliza ampliamente en Python.

Este tutorial demuestra las diferentes formas disponibles para crear una fábrica de clases.

Cómo crear una fábrica de clases en Python

Hay dos métodos para diseñar una fábrica de clases; uno crea una clase durante el tiempo de codificación mientras que el otro crea una clase durante el tiempo de ejecución.

El primero usa la palabra clave clase, mientras que el segundo usa la palabra clave tipo. Ambos métodos se explican y contrastan en el siguiente artículo.

Utilice la palabra clave clase para crear una fábrica de clases en Python

Podemos crear una fábrica de clases usando la palabra clave clase. Para esto, necesitamos crear una función y mantener una clase dentro de la definición de la función.

El siguiente código usa la palabra clave clase para crear una fábrica de clases en Python.

def ballfun():
    class Ball(object):
        def __init__(self, color):
            self.color = color

        def getColor(self):
            return self.color

    return Ball


Ball = ballfun()
ballObj = Ball("green")
print(ballObj.getColor())

El código anterior proporciona el siguiente resultado.

green

Use la palabra clave tipo para crear una fábrica de clases en Python

La palabra clave tipo permite la creación dinámica de clases. Necesitamos utilizar la palabra clave tipo para hacer una fábrica de clases en Python.

Sin embargo, debemos tener en cuenta que con la utilización de la palabra clave tipo, las funciones se dejarán solo en el espacio de nombres, justo con la clase.

El siguiente código usa la palabra clave tipo para crear una clase dinámica en Python.

def init(self, color):
    self.color = color


def getColor(self):
    return self.color


Ball = type(
    "Ball",
    (object,),
    {
        "__init__": init,
        "getColor": getColor,
    },
)
ballGreen = Ball(color="green")
print(ballGreen.getColor())

El código anterior proporciona el siguiente resultado.

green

La palabra clave tipo permite clases dinámicas y creación efectiva en tiempo de ejecución y desventajas. Como puede ver en el código anterior, las funciones init y getColor están abarrotadas en el espacio de nombres.

Además, la perspectiva de reutilización de estas funciones también se pierde cuando las clases dinámicas se crean utilizando la palabra clave tipo.

Una solución fácil a esto sería la introducción de una fábrica de clases. Ayuda en ambos sentidos, ya que disminuye el desorden en el código y promueve la reutilización de las funciones.

El siguiente código usa la palabra clave tipo para crear una fábrica de clases en Python.

def create_ball_class():
    def init(self, color):
        self.color = color

    def getColor(self):
        return self.color

    return type(
        "Ball",
        (object,),
        {
            "__init__": init,
            "getColor": getColor,
        },
    )


Ball = create_ball_class()
ballObj = Ball("green")
print(ballObj.getColor())

El código anterior proporciona el siguiente resultado.

green

Ahora que hemos visto cómo crear una fábrica de clases, también es importante distinguir cuándo usar y cuándo no usar el concepto recién aprendido de fábricas de clases.

En general, las fábricas de clases son útiles cuando no sabemos qué atributos se asignarán cuando se produzca la codificación.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Artículo relacionado - Python Class