__str__和__repr__方法

Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。

函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。
repr()函数得到的字符串通常可以用来重新获得该对象,repr()的输入对python比较友好。通常情况下obj==eval(repr(obj))这个等式是成立的。

print('asd' == eval(repr('asd')))   #  True  而str()函数这没有这个功能

>>>repr([0,1,2,3])
'[0,1,2,3]'
>>> repr('Hello')
"'Hello'"

>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285'
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
    def __str__(self):
        return '(__str__: %s, %s)' % (self.name, self.gender)

    def __repr__(self):
        return '(__repr__: %r, %r)' % (self.name, self.gender)

p = Person('lh','male')
print(p)   # (__str__: lh, male)
print(p.__str__())  # (__str__: lh, male)
print(p.__repr__())  # (__repr__: 'lh', 'male')

# %s => str(),比较智能;
# %r => repr(),处理较为简单和直接;
print("%s" %p)  # (__str__: lh, male)
print("%r" %p)  # (__repr__: 'lh', 'male')


猜你喜欢

转载自blog.csdn.net/qq_34964399/article/details/79839387