Convert a python 'type' object to a string

前端 未结 5 1998
刺人心
刺人心 2020-12-02 09:00

I\'m wondering how to convert a python \'type\' object into a string using python\'s reflective capabilities.

For example, I\'d like to print the type of an object

相关标签:
5条回答
  • 2020-12-02 09:31

    In case you want to use str() and a custom str method. This also works for 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'
    
    0 讨论(0)
  • 2020-12-02 09:33
    print type(someObject).__name__
    

    If that doesn't suit you, use this:

    print some_instance.__class__.__name__
    

    Example:

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

    Also, it seems there are differences with type() when using new-style classes vs old-style (that is, inheritance from object). For a new-style class, type(someObject).__name__ returns the name, and for old-style classes it returns instance.

    0 讨论(0)
  • 2020-12-02 09:34
    print("My type is %s" % type(someObject)) # the type in python
    

    or...

    print("My type is %s" % type(someObject).__name__) # the object's type (the class you defined)
    
    0 讨论(0)
  • 2020-12-02 09:36

    Using str()

     typeOfOneAsString=str(type(1))
    
    0 讨论(0)
  • 2020-12-02 09:40
    >>> class A(object): pass
    
    >>> e = A()
    >>> e
    <__main__.A object at 0xb6d464ec>
    >>> print type(e)
    <class '__main__.A'>
    >>> print type(e).__name__
    A
    >>> 
    

    what do you mean by convert into a string? you can define your own repr and 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
    

    or i dont know..please add explainations ;)

    0 讨论(0)
提交回复
热议问题