파이썬 'type'객체를 문자열로 변환


152

파이썬의 반사 기능을 사용하여 파이썬 '유형'객체를 문자열로 변환하는 방법이 궁금합니다.

예를 들어, 객체의 유형을 인쇄하고 싶습니다

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

1
객체의 "유형"은 무엇이라고 생각하십니까? 그리고 당신이 게시 한 것에 대해 효과가없는 것은 무엇입니까?
Falmarri 2019

사과, 인쇄 유형 (여기서 someObject) : 작업을 실제로 수행
Rehno Lindeque

답변:


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


3
이렇게 print(type(someObject))전체 이름을 인쇄합니다 (즉, 패키지에 포함.)
MageWind

7
>>> class A(object): pass

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

문자열로 변환한다는 것은 무엇을 의미합니까? 자신의 reprstr _ 메소드를 정의 할 수 있습니다 .

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

또는 나는 모른다.. 설명을 추가하십시오;)


Btw. 나는 원래 대답은 STR에게도 도움이되었다 (유형 (여기서 someObject)) 있다고 생각
Rehno Lindeque을

4
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

사용하려는 경우 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'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.