¸üÐÂʱ¼ä:2019Äê09ÔÂ12ÈÕ16ʱ17·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
ÏÂÃæÎÒÃǽéÉÜpython ÖеÄħ·¨·½·¨__str__ ºÍ__repr__
1. ÒýÑÔ
ÔÚÑ§Ï°ÃæÏò¶ÔÏóµÄʱºò£¬ÎÒÃÇÖªµÀÔÚ python ÖÐÓÐÒ»ÀàÌØÊâµÄ·½·¨£¬½Ð×öħ·¨·½·¨£¬ÕâÖÖ·½·¨µÄÌØµãÈçÏ£º
(1)·½·¨¶¨ÒåµÄʱºòÒÔÁ½¸öÏ»®Ïß¿ªÍ·ºÍÁ½¸öÏ»®Ïß½áβ£ºÈç__init__¡¢__str__ºÍ__repr__
(2)ÕâÀà·½·¨Ò»°ã²»ÐèÒªÎÒÃÇÊÖ¶¯µ÷Óã¬ÔÚÂú×ãij¸öÌõ¼þµÄʱºò»á×Ô¶¯µ÷Óã¬Õâ¸öÂú×ãµÄÌõ¼þÎÒÃÇ¿ÉÒÔ³ÉΪµ÷ÓÃʱ»ú¡£
ÔÚPython ÖÐÓÐÁ½¸öħ·¨·½·¨¶¼ÊÇÓÃÀ´ÃèÊö¶ÔÏóÐÅÏ¢µÄ£¬__str__ºÍ__repr__£¬ÄÇΪʲôҪ¶¨ÒåÁ½¸öÕâÑùµÄ·½·¨ÄØ£¬ÆäʵÊÇËûÃÇÉè¼ÆµÄÄ¿µÄÊDz»Ò»ÑùµÄ£º
(1) __repr__µÄÄ¿±êÊÇ׼ȷÐÔ£¬»òÕß˵£¬__repr__µÄ½á¹ûÊÇÈýâÊÍÆ÷Óõġ£
(2)__str__µÄÄ¿±êÊǿɶÁÐÔ£¬»òÕß˵£¬__str__µÄ½á¹ûÊÇÈÃÈË¿´µÄ¡£

2. ·ÖÎö
ÄÇϱߣ¬ÎÒÃÇÏêϸµÄÀ´¿´Ò»Ï£¬ËûÃǵÄÓ÷¨£º ÔÚ²»ÖØÐ´__str__ ºÍ __repr__µÄÇé¿öÏ£¬´òÓ¡¶ÔÏóµÄÊä³ö½á¹û²»Ì«ÓѺã¬ÊǶÔÏóµÄÄÚ´æµØÖ·£¬¼´ id µÄ½á¹û¡£
# ¶¨Òå Person Àà
class Person(object):
def __init__(self, name):
self.name = name
p = Person("isaac")
ÒÔÏÂΪ²âÊÔÊä³öµÄ½á¹û£º
>>> print(p)
<__main__.Person object at 0x10f29b940>
>>> p
<__main__.Person object at 0x10f29b940>
>>> p.__str__()
'<__main__.Person object at 0x10f29b940>'
>>> p.__repr__()
'<__main__.Person object at 0x10f29b940>'
ÕâÑùµÄÊä³ö½á¹û£¬²¢²»ÊÇÎÒÃÇÏëÒªµÄ½á¹û£¬´ËʱÎÒÃÇÖØÐ´__str__ ºÍ __repr__·½·¨¡£
2.1 ÖØÐ´__str__ ·½·¨
# ¶¨Òå Person Àà
class Person(object):
def __init__(self, name):
self.name = name
def __str__(self):
return "__str__ ·½·¨ " + self.name
p = Person("isaac")
ÒÔÏÂΪ²âÊÔ½á¹û£º
>>> print(p)
__str__ ·½·¨ isaac
>>> str(p)
'__str__ ·½·¨ isaac'
>>> f"{p}"
'__str__ ·½·¨ isaac'
>>> p.__str__()
'__str__ ·½·¨ isaac'
>>> p
´ËʱÎÒÃÇ·¢ÏÖÔÚʹÓà print ´òÓ¡¶ÔÏó¡¢¶ÔÏóµÄ¸ñʽ»¯Êä³öÒÔ¼°µ÷Óà str ·½·¨£¬µ÷ÓõͼÊÇ__str__·½·¨¡£µ«ÔÚ½»»¥»·¾³Ï£¬Ö±½ÓÊä³ö ¶ÔÏóµÄʱºò£¬Ã»Óе÷ÓÃ__str__ ·½·¨£¬Êä³öµÄ½á¹ûÈÔÈ»ÊÇ id µÄ½á¹û¡£
2.2 ÖØÐ´__repr__ ·½·¨
# ¶¨Òå Person Àà
class Person(object):
def __init__(self, name):
self.name = name
def __str__(self):
return "__str__ ·½·¨ " + self.name
def __repr__(self):
return "__repr__ ·½·¨ " + self.name
p = Person("isaac")
´Ëʱ£¬ÎÒÃÇÔÙÀ´¿´Êä³öµÄ½á¹û£¬
>>> p
__repr__ ·½·¨isaac
>>> p.__repr__()
'__repr__ ·½·¨isaac'
>>> print(p)
__str__ ·½·¨ isaac
ͨ¹ý¼òµ¥µÄ¶Ô±È£¬ÎÒÃÇ·¢ÏÖ£¬ÔÚ½»»¥»·¾³Ï£¬Ö±½ÓÊä³ö¶ÔÏ󣬵÷ÓõÄ__repr__ ·½·¨¡£ ÁíÍ⻹ÐèҪעÒâµÄÊÇ£¬Èç¹û½«¶ÔÏó·ÅÔÚÈÝÆ÷ÖнøÐÐÊä³ö£¬µ÷ÓõÄÊÇ__repr__ ·½·¨¡£
>>> [p]
[__repr__ ·½·¨ isaac]
>>> (p)
__repr__ ·½·¨ isaac
>>> {"1":p}
{'1': __repr__ ·½·¨ isaac}
>>> print([p])
[__repr__ ·½·¨ isaac]
3. ×ܽá
Python ÖеÄ__str__ ºÍ __repr__·½·¨¶¼ÊÇÓÃÀ´ÏÔʾµÄ£¬¼´ÃèÊö¶ÔÏóÐÅÏ¢µÄ¡£
1. __str__µÄÄ¿±êÊǿɶÁÐÔ£¬»òÕß˵£¬__str__µÄ½á¹ûÊÇÈÃÈË¿´µÄ¡£Ö÷ÒªÓÃÀ´´òÓ¡£¬¼´ print ²Ù×÷£¬
2. __repr__µÄÄ¿±êÊÇ׼ȷÐÔ£¬»òÕß˵£¬__repr__µÄ½á¹ûÊÇÈýâÊÍÆ÷Óõġ£__repr__ÓÃÓÚ½»»¥Ä£Ê½ÏÂÌáʾ»ØÓ¦£¬
3. Èç¹ûûÓÐÖØÐ´__str__·½·¨£¬µ«ÖØÐ´ÁË__repr__·½·¨Ê±£¬ËùÓе÷ÓÃ__str__µÄʱ»ú¶¼»áµ÷ÓÃ__repr__·½·¨¡£
ÍÆ¼öÁ˽⣺
´óÊý¾ÝÅàѵ¿Î³Ì
python+È˹¤ÖÇÄܿγÌ
±±¾©Ð£Çø