214 votes

Convertir un objet python 'type' en chaîne de caractères

Je me demande comment convertir un objet python 'type' en une 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)

323voto

Gabi Purcaru Points 15158
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 qu'il y ait des différences avec type() lors de l'utilisation de classes de style nouveau par rapport au style ancien (c'est-à-dire, héritage de object). Pour une classe de style nouveau, type(someObject).__name__ renvoie le nom, et pour les classes de style ancien, il renvoie instance.

12voto

Ant Points 1953
>>> 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 de caractères ? vous pouvez définir votre propre repr et str_ methods :

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

6voto

Fisher Points 19
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)

3voto

killjoy Points 884

Dans le cas où vous souhaitez utiliser str() et une méthode de str personnalisée. Cela fonctionne également pour

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'

2voto

Brian C. Points 464

En utilisant la fonction str(), vous pouvez le faire.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X