Преобразовать объект типа python в строку
Мне интересно, как преобразовать объект типа "python" в строку с использованием отражающих возможностей питона.
Например, я хотел бы напечатать тип объекта
print "My type is " + type(someObject) # (which obviously doesn't work like this)
EDIT: Btw, спасибо, ребята, я просто искал обычную печать типов для целей вывода консоли, ничего необычного. Gabi type(someObject).__name__
отлично работает:)
Ответы
Ответ 1
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
.
Ответ 2
>>> 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
или я не знаю..пожалуйста, добавьте объяснения;)
Ответ 3
print("My type is %s" % type(someObject)) # the type in python
или...
print("My type is %s" % type(someObject).__name__) # the object type (the class you defined)
Ответ 4
Использование str()
typeOfOneAsString=str(type(1))
Ответ 5
Если вы хотите использовать str()
и пользовательский метод str. Это также работает для 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'