Saltar al contenido

Crear un objeto vacío en Python

Después de mirar en diversos repositorios y páginas webs de internet al final descubrimos la solución que te enseñamos pronto.

Solución:

Puede usar el tipo para crear una nueva clase sobre la marcha y luego crear una instancia. Al igual que:

>>> t = type('test', (object,), )()
>>> t
<__main__.test at 0xb615930c>

Los argumentos a escribir son: Nombre de la clase, una tupla de clases base y el diccionario del objeto. Que puede contener funciones (los métodos del objeto) o attributes.

De hecho, puede acortar la primera línea a

>>> t = type('test', (), )()
>>> t.__class__.__bases__
(object,)

Porque por defecto type crea nuevas clases de estilo que heredan de object.

type se utiliza en Python para la metaprogramación.

Pero si solo desea crear una instancia de object. Luego, solo crea una instancia de él. Como sugiere lejlot.

Crear una instancia de una nueva clase como esta tiene una diferencia importante que puede ser útil.

>>> a = object()
>>> a.whoops = 1
Traceback (most recent call last):
   File "", line 1, in 
AttributeError: 'object' object has no attribute 'whoops'

Mientras:

>>> b = type('', (), )()
>>> b.this_works = 'cool'
>>> 

Sí, en Python 3.3 se agregó SimpleNamespace

A diferencia del objeto, con SimpleNamespace puede agregar y eliminar attributes. Si un objeto SimpleNamespace se inicializa con argumentos de palabras clave, estos se agregan directamente al espacio de nombres subyacente.

Ejemplo:

import types

x = types.SimpleNamespace()
x.happy = True

print(x.happy) # True

del x.happy
print(x.happy) # AttributeError. object has no attribute 'happy'

Una forma simple y menos aterradora de crear un objeto vacío (-ish) es explotar el hecho de que las funciones son objetos en Python, incluidas las funciones de Lambda:

obj = lambda: None
obj.test = "Hello, world!"

Por ejemplo:

In [18]: x = lambda: None

In [19]: x.test = "Hello, world!"

In [20]: x.test
Out[20]: 'Hello, world!'

Sección de Reseñas y Valoraciones

Agradecemos que desees ayudar nuestro cometido ejecutando un comentario o dejando una puntuación te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

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