Преобразовать объект типа Python в строку - PullRequest
114 голосов
/ 15 февраля 2011

Мне интересно, как преобразовать объект типа Python в строку, используя отражающие возможности Python.

Например, я хотел бы напечатать тип объекта

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

РЕДАКТИРОВАНИЕ: Кстати, спасибо, ребята, я просто искал простую печать типов для целей вывода на консоль, ничего особенного.Габи type(someObject).__name__ работает просто отлично :)

Ответы [ 4 ]

178 голосов
/ 15 февраля 2011
print type(someObject).__name__

Если вас это не устраивает, используйте это:

print some_instance.__class__.__name__

Пример:

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

Также, кажется, есть различия с type() при использованииклассы нового стиля против старого стиля (то есть наследование от object).Для класса нового стиля type(someObject).__name__ возвращает имя, а для классов старого стиля - instance.

7 голосов
/ 15 февраля 2011
>>> class A(object): pass

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

что вы подразумеваете под преобразованием в строку?Вы можете определить свои собственные repr и 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

или я не знаю .. пожалуйста, добавьте объяснения;)

4 голосов
/ 16 февраля 2011
print("My type is %s" % type(someObject)) # the type in python

или ...

print("My type is %s" % type(someObject).__name__) # the object's type (the class you defined)
1 голос
/ 10 мая 2018

Использование str ()

 typeOfOneAsString=str(type(1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...