What is the difference between __str__ and __repr__

anonymity
Release: 2020-09-17 14:28:24
Original
5313 people have browsed it

The difference between __str__ and repr__ is: __str__ will return a friendly display, while __repr__ needs to reconstruct the method, and then display __repr__ at the bottom. __str__ overrides __repr__ for a more user-friendly display.

What is the difference between __str__ and __repr__

The difference between __repr__ and __str__ (explanation)

__repr__ and __str__ The methods are all for display, __str__ is for users, and __repr__ is for programmers.

Print operations will first try the __str__ and str built-in functions (the internal equivalent of the print operation), which should usually return a friendly display.

__repr__ is used in all other environments: used for prompt responses in interactive mode and the repr function. If __str__ is not used, print and str will be used. It should usually return an encoded string that can be used to recreate the object or display details to the developer.

When we want to display uniformly in all environments, we can refactor the __repr__ method; when we want to support different displays in different environments, for example, end users use __str__ for display, and programmers are developing During the period, the underlying __repr__ is used for display. In fact, __str__ just overrides __repr__ to get a more user-friendly display.

class Test(object):
    def __init__(self, value='hello, world!'):
        self.data = value
>>> t = Test()
>>> t
<__main__.Test at 0x7fa91c307190>
>>> print t
<__main__.Test object at 0x7fa91c307190>
# 看到了么?上面打印类对象并不是很友好,显示的是对象的内存地址
# 下面我们重构下该类的__repr__以及__str__,看看它们俩有啥区别
# 重构__repr__
class TestRepr(Test):
    def __repr__(self):
        return &#39;TestRepr(%s)&#39; % self.data
>>> tr = TestRepr()
>>> tr               直接终端显示,不print就是面向程序员
TestRepr(hello, world!)
>>> print tr         print是面向程序员
TestRepr(hello, world!)
# 重构__repr__方法后,不管直接输出对象还是通过print打印的信息都按我们__repr__方法中定义的格式进行显示了
# 重构__str__
calss TestStr(Test):
    def __str__(self):
        return &#39;[Value: %s]&#39; % self.data
>>> ts = TestStr()
>>> ts
<__main__.TestStr at 0x7fa91c314e50>
>>> print ts
[Value: hello, world!]
# 你会发现,直接输出对象ts时并没有按我们__str__方法中定义的格式进行输出,而用print输出的信息却改变了
Copy after login

The above is the detailed content of What is the difference between __str__ and __repr__. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!