Crear clases dinámicamente en Python

Una clase define una colección de variables de instancia y métodos para especificar un tipo de objeto. Una clase se puede utilizar para crear tantas instancias de objeto del tipo de objeto como sea necesario. Un objeto es una entidad identificada con ciertos atributos (miembros de datos) y comportamientos (funciones miembro). Un grupo de objetos que tienen características y comportamiento similares son la instancia de la misma clase.

Python es un lenguaje de programación dinámico y, debido a su flexibilidad, Python tiene una ventaja significativa sobre los lenguajes de tipado estático. El código Python se puede importar dinámicamente y las clases se pueden crear dinámicamente en tiempo de ejecución.

Las clases se pueden crear dinámicamente usando la type()función en Python. La type()función se utiliza para devolver el tipo del objeto.

Sintaxis:

type(object)

La sintaxis anterior devuelve el tipo de objeto.

Ejemplo:

# program to illustrate the use of type()
  
print(type("Geeks4Geeks !")) 
print(type(1706256))

Producción:

class 'str'
class 'int'

Creación de clases dinámicas en Python

Las clases se pueden crear dinámicamente usando la siguiente sintaxis:
Sintaxis:

type(name, bases, attributes) 

Parameters:
name: The user defined name of the class
bases: A list of base classes, and its type is tuple
attributes: the data members and methods contained in the class

La sintaxis anterior devuelve un nuevo tipo de objeto.

Ejemplo:

# program to create class dynamically
  
# constructor
def constructor(self, arg):
    self.constructor_arg = arg
  
# method
def displayMethod(self, arg):
    print(arg)
  
# class method
@classmethod
def classMethod(cls, arg):
    print(arg)
  
# creating class dynamically
Geeks = type("Geeks", (object, ), {
    # constructor
    "__init__": constructor,
      
    # data members
    "string_attribute": "Geeks 4 geeks !",
    "int_attribute": 1706256,
      
    # member functions
    "func_arg": displayMethod,
    "class_func": classMethod
})
  
# creating objects
obj = Geeks("constructor argument")
print(obj.constructor_arg)
print(obj.string_attribute)
print(obj.int_attribute)
obj.func_arg("Geeks for Geeks")
Geeks.class_func("Class Dynamically Created !")

Producción:

constructor argument
Geeks 4 geeks!
1706256
Geeks for GeeksClass Dynamically Created!

En el programa anterior, la clase Geeksse crea dinámicamente y tiene un constructor. Los miembros de datos de Geeksson string_attributey int_attributey las funciones miembro de Geeksson displayMethod()y classMethod(). Se crea un objeto objde clase Geeksy se asignan y muestran todos los miembros de datos Geeks, también se llaman todas las funciones miembro de.

Publicación traducida automáticamente

Artículo escrito por riturajsaha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *