When __repr__() is called?

前端 未结 4 1048
轻奢々
轻奢々 2021-01-17 10:08

print OBJECT calls OBJECT.__str__(), then when OBJECT.__repr__() is called? I see that print OBJECT calls OBJECT.__

4条回答
  •  耶瑟儿~
    2021-01-17 10:55

    repr(obj)
    

    calls

    obj.__repr__
    

    the purpose of __repr__ is that it provides a 'formal' representation of the object that is supposed to be a expression that can be evaled to create the object. that is,

    obj == eval(repr(obj))
    

    should, but does not always in practice, yield True

    I was asked in the comments for an example of when obj != eval(repr(obj)).

    class BrokenRepr(object):
        def __repr__(self):
            return "not likely"
    

    here's another one:

    >>> con = sqlite3.connect(':memory:')
    >>> repr(con)
    ''
    >>> 
    

提交回复
热议问题