web-dev-qa-db-fra.com

Convertit un objet python 'type' en une chaîne)

Je me demande comment convertir un objet python 'type') en chaîne en utilisant les capacités de réflexion de python.

Par exemple, je voudrais imprimer le type d'un objet

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

EDIT: Btw, merci les gars, je cherchais simplement une impression simple de types à des fins de sortie sur console, rien d'extraordinaire. La type(someObject).__name__ de Gabi fonctionne très bien :)

119
Rehno Lindeque
print type(someObject).__name__

Si cela ne vous convient pas, utilisez ceci:

print some_instance.__class__.__name__

Exemple:

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

En outre, il semble y avoir des différences avec type() lors de l'utilisation de classes de style nouveau par rapport à l'ancien (c'est-à-dire l'héritage de object). Pour une classe de style nouveau, type(someObject).__name__ renvoie le nom et pour les classes de style ancien, instance.

186
Gabi Purcaru
>>> class A(object): pass

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

que voulez-vous dire par convertir en chaîne? vous pouvez définir vos propres méthodes repr et str _:

>>> 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

ou je ne sais pas..veuillez ajouter des explications;)

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

ou...

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

Utiliser str ()

 typeOfOneAsString=str(type(1))
1
Brian C.

Si vous voulez utiliser str() et une méthode personnalisée str. Cela fonctionne aussi pour 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'
0
killjoy