python中__repr__與__str__方法詳解
__str__ 和 __repr__ 是 Python 中兩個(gè)非常重要的魔法方法,它們都用于定義對(duì)象的字符串表示,但各自的使用場(chǎng)景和目標(biāo)有所不同。
1.__str__:面向用戶的字符串表示
- 目的:
__str__主要用于為對(duì)象提供一個(gè)友好的、易于理解的字符串表示,通常是面向終端用戶或者外部系統(tǒng)的輸出。 - 用途:當(dāng)你使用 print() 函數(shù)或者 str() 函數(shù)時(shí),Python 會(huì)調(diào)用對(duì)象的
__str__方法。它應(yīng)該返回一個(gè)簡(jiǎn)潔、直觀且易于閱讀的字符串。
代碼示例:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"Point at ({self.x}, {self.y})"
p = Point(3, 4)
print(p)
代碼輸出:
Point at (3, 4)
2.__repr__:面向開發(fā)者的字符串表示
- 目的:
__repr__的主要目的是為開發(fā)者提供一種無歧義的、盡可能詳細(xì)的字符串表示,以便于調(diào)試和開發(fā)。它應(yīng)該盡量返回一個(gè)能夠重新構(gòu)建該對(duì)象的字符串(或至少能夠描述該對(duì)象)。 - 用途:
__repr__通常用于調(diào)試、日志記錄、交互式環(huán)境(如 Python shell),以及當(dāng)你打印對(duì)象時(shí),Python 會(huì)自動(dòng)調(diào)用該方法。如果未定義__str__方法,__repr__會(huì)被用作 print() 輸出的后備方法。
代碼示例:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point(x={self.x}, y={self.y})"
p = Point(3, 4)
print(repr(p))
代碼輸出:
Point(x=3, y=4)
3.__str__vs__repr__:區(qū)別
| 特性 | __str__ | __repr__ |
|---|---|---|
| 目標(biāo) | 面向終端用戶,簡(jiǎn)潔、友好、易讀 | 面向開發(fā)者,詳細(xì)、無歧義、可重建對(duì)象 |
| 輸出格式 | 通常為簡(jiǎn)單的字符串描述,易于理解 | 返回盡可能完整的對(duì)象信息,通常包括類名和參數(shù) |
| 用途 | 主要用于 print()、str() 輸出 | 主要用于調(diào)試、交互式環(huán)境、日志記錄 |
| 默認(rèn)行為 | 如果沒有定義 __str__,Python 會(huì)調(diào)用 __repr__ | 如果沒有定義 __repr__,Python 會(huì)調(diào)用默認(rèn)的 __repr__,該默認(rèn)方法返回一個(gè)類似 <__main__.ClassName object at 0x000000> 的表示 |
4. 綜合示例
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"Point at ({self.x}, {self.y})"
def __repr__(self):
return f"Point(x={self.x}, y={self.y})"
# 創(chuàng)建一個(gè) Point 對(duì)象
p = Point(3, 4)
# 面向用戶的字符串表示
print(str(p)) # Output: Point at (3, 4)
# 面向開發(fā)者的字符串表示
print(repr(p)) # Output: Point(x=3, y=4)
總結(jié)
__str__是用戶友好的輸出,返回一個(gè)易于理解的字符串__repr__是開發(fā)者友好的輸出,返回一個(gè)更詳細(xì)的、能夠重建對(duì)象的字符串- 如果
__str__沒有定義,Python 會(huì)回退到使用__repr__
到此這篇關(guān)于python中__repr__與__str__方法詳解的文章就介紹到這了,更多相關(guān)python __repr__ __str__內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
conda安裝GPU版pytorch默認(rèn)卻是cpu版本
本文主要介紹了遇到Conda安裝PyTorch GPU版本卻默認(rèn)安裝CPU的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-06-06
Python-pywin32庫(kù)的使用高級(jí)操作方法
文章介紹了Python的pywin32庫(kù),該庫(kù)允許訪問Windows?API并執(zhí)行高級(jí)操作,對(duì)Python?pywin32庫(kù)使用方法感興趣的朋友跟隨小編一起看看吧2025-11-11
Python?Pyecharts繪制?;鶊D分析用戶行為路徑
這篇文章主要為大家介紹了Python?Pyecharts繪制?;鶊D分析用戶行為路徑,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
matplotlib bar()實(shí)現(xiàn)多組數(shù)據(jù)并列柱狀圖通用簡(jiǎn)便創(chuàng)建方法
這篇文章主要介紹了matplotlib bar()實(shí)現(xiàn)多組數(shù)據(jù)并列柱狀圖通用簡(jiǎn)便創(chuàng)建方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Tensorflow tf.nn.atrous_conv2d如何實(shí)現(xiàn)空洞卷積的
這篇文章主要介紹了Tensorflow tf.nn.atrous_conv2d如何實(shí)現(xiàn)空洞卷積的,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
python實(shí)現(xiàn)合并兩個(gè)數(shù)組的方法
這篇文章主要介紹了python實(shí)現(xiàn)合并兩個(gè)數(shù)組的方法,實(shí)例分析了兩種常用的合并數(shù)組的技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-05-05
Python實(shí)現(xiàn)模擬分割大文件及多線程處理的方法
這篇文章主要介紹了Python實(shí)現(xiàn)模擬分割大文件及多線程處理的方法,涉及Python文件讀取、分割及多線程相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
使用Python的Flask框架來搭建第一個(gè)Web應(yīng)用程序
Flask框架是一個(gè)以輕量級(jí)著稱的Web開發(fā)框架,近兩年來在Web領(lǐng)域獲得了極高的人氣,這里我們就來看如何使用Python的Flask框架來搭建第一個(gè)Web應(yīng)用程序2016-06-06

