Convierta un objeto ‘tipo’ de python en una cadena

2 minutos de lectura

avatar de usuario
Rehno Lindeque

Me pregunto cómo convertir un objeto ‘tipo’ de python en una cadena usando las capacidades reflexivas de python.

Por ejemplo, me gustaría imprimir el tipo de un objeto

print("My type is " + type(some_object))  # (which obviously doesn't work like this)

  • ¿Qué consideras que es el “tipo” de un objeto? ¿Y qué es lo que no funciona de lo que publicaste?

    – Falmarri

    15/02/2011 a las 20:00

  • Disculpas, el tipo de impresión (someObject) realmente funciona 🙂

    – Rehno Lindeque

    15 de febrero de 2011 a las 20:12

avatar de usuario
Gabi Purcarú

print(type(some_object).__name__)

Si eso no te conviene, usa esto:

print(some_instance.__class__.__name__)

Ejemplo:

class A:
    pass
print(type(A()))
# prints <type 'instance'>
print(A().__class__.__name__)
# prints A

Además, parece que hay diferencias con type() cuando se usan clases de estilo nuevo frente a estilo antiguo (es decir, herencia de object). Para una clase de nuevo estilo, type(someObject).__name__ devuelve el nombre, y para las clases de estilo antiguo devuelve instance.

  • Haciendo print(type(someObject)) imprimirá el nombre completo (es decir, incluido el paquete)

    – MageWind

    30/06/2014 a las 20:20


>>> class A(object): pass

>>> e = A()
>>> e
<__main__.A object at 0xb6d464ec>
>>> print type(e)
<class '__main__.A'>
>>> print type(e).__name__
A
>>> 

¿Qué quieres decir con convertir en una cadena? puedes definir el tuyo repetir y calle_ métodos:

>>> class A(object):
    def __repr__(self):
        return 'hei, i am A or B or whatever'

>>> e = A()
>>> e
hei, i am A or B or whatever
>>> str(e)
hei, i am A or B or whatever

o no sé… por favor agregue explicaciones;)

  • Por cierto. Creo que su respuesta original tenía str(type(someObject)) que también fue útil

    – Rehno Lindeque

    15 de febrero de 2011 a las 20:14

avatar de usuario
Pescador

print("My type is %s" % type(someObject)) # the type in python

o…

print("My type is %s" % type(someObject).__name__) # the object's type (the class you defined)

avatar de usuario
aguafiestas

En caso de que quieras usar str() y una costumbre calle método. Esto también funciona para repr.

class TypeProxy:
    def __init__(self, _type):
        self._type = _type

    def __call__(self, *args, **kwargs):
        return self._type(*args, **kwargs)

    def __str__(self):
        return self._type.__name__

    def __repr__(self):
        return "TypeProxy(%s)" % (repr(self._type),)

>>> str(TypeProxy(str))
'str'
>>> str(TypeProxy(type("")))
'str'

avatar de usuario
brian c

Usando la función str() puedes hacer esto.

 typeOfOneAsString=str(type(1))  # changes the type to a string type

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad