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 :)
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
.
>>> 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;)
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)
Utiliser str ()
typeOfOneAsString=str(type(1))
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'