欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文讓你徹底搞懂Python中__str__和__repr__

 更新時間:2023年05月25日 10:04:14   作者:宇宙之一粟  
這篇文章主要介紹了Python中的__str__和__repr__的異同,__str__和__repr__是基本的內(nèi)置方法,文中有詳細的代碼示例,感興趣的同學可以參考閱讀下

__str__和__repr__的異同?

字符串的表示形式

我們都知道,Python的內(nèi)置函數(shù)repr()能夠把對象用字符串的形式表達出來,方便我們辨認。這就是“字符串表示形式”。repr()就是通過__repr__這個特殊方法來得到一個對象的字符串表示形式的。如果沒有實現(xiàn)__repr__,當我們在控制臺里打印一個向量的實例時,得到的字符串可能會是 <Vector object at 0x10a514f98>。

>>> class Example: pass
>>> print(str(Example()))
<__main__.Example object at 0x10a514f98>
>>> print(repr(Example()))
<__main__.Example object at 0x1088eb438>
>>> 
>>> str(Example)
"<class '__main__.Example'>"
>>> repr(Example())
'<__main__.Example object at 0x1088eb438>'

__str__vs.__repr__

接下來我們看一看**__str____repr__**有哪些異同。根據(jù)Python官方文檔定義:

  • __str__:通過str(object)以及內(nèi)置函數(shù)format()和print()調(diào)用以生成一個對象的“非正式”或格式良好的字符串表示。返回值必須是字符串對象。
  • __repr__:是由repr()內(nèi)置函數(shù)調(diào)用,用來輸出一個對象的“官方”字符串表示。返回值必須是字符串對象,此方法通常被用于調(diào)試。內(nèi)置類型 object 所定義的默認實現(xiàn)會調(diào)用 object.__repr__()。

什么正式與非正式格式,你已經(jīng)搞懵了是嗎?沒事,我們接著看:

1. 兩者都能輸出對象

>>> x = 4
>>> repr(x)
'4'
>>> str(x)
'4'
>>> y = 'pythonic'
>>> repr(y)
"'pythonic'"
>>> str(y)
'pythonic'
>>> z = '4'
>>> repr(z)
"'4'"
>>> str(z)	# 注意,此處的輸出結果形式跟str(x)一樣,但x和z的類型并不一樣
'4'
>>> str(x) == str(z)
True
>>> repr(x) == repr(z)
False
>>> str(4) == str("4")
True
>>> repr(4) == repr("4")
False

當x=4,當x為整數(shù)類型時,調(diào)用str()和repr()的返回結果是一樣,

而當y為字符串類型時,repr(y)的結果就是“正式”的字符串表示,而str(y)的結果則是“非正式”的。str()能夠讓我們最快速了解到對象的內(nèi)容,可讀性較高。

2 .__str__是可讀的,__repr__的目標是明確的

>>> import datetime
>>> d = datetime.datetime.now()
>>> str(d)
'2020-04-04 20:47:46.525245'
>>> repr(d)
'datetime.datetime(2020, 4, 4, 20, 47, 46, 525245)'
>>> 

可以看出repr()更能顯示出對象的類型、值等信息,對象描述清晰的。

在 str() 函數(shù)被使用,或是在用 print 函數(shù)打印一個對象的時候才被調(diào)用的,并且它返回的字符串對終端用戶更友好。

3. 重寫__repr__,那也會使用__str_

class Student():
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return "Name:" + self.name
    def __repr__(self):
        return "姓名:" + self.name
class_one = Student("Alice")
print(class_one)
print(str(class_one))
print(repr(class_one))

輸出結果:

Name:Alice
Name:Alice
姓名:Alice

總結

共同點: 都是用來輸出一個對象

區(qū)別

  • __str__ 的目標是可讀的,__str__()并不預期返回一個有效的 Python 表達式,但可以使用更方便或更準確的描述信息。
  • __repr__ 的目標是明確的,所返回的字符串應該準確、無歧義,并且盡可能表達出如何 用代碼創(chuàng)建出這個被打印的對象。
  • 容器的 __str__ 方法的使用包含對象的 __repr__

到此這篇關于一文讓你徹底搞懂Python中__str__和__repr__的文章就介紹到這了,更多相關Python __str__和__repr__內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 推薦11個實用Python庫

    推薦11個實用Python庫

    這篇文章主要推薦了11個實用Python庫,都有這不錯的群眾基礎,非常好用,也都很實用,推薦給大家。
    2015-01-01
  • Python判斷直線和矩形是否相交的方法

    Python判斷直線和矩形是否相交的方法

    這篇文章主要介紹了Python判斷直線和矩形是否相交的方法,涉及Python坐標系下的直線與矩形相關運算,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 實例講解Python中SocketServer模塊處理網(wǎng)絡請求的用法

    實例講解Python中SocketServer模塊處理網(wǎng)絡請求的用法

    SocketServer模塊中帶有很多實現(xiàn)服務器所能夠用到的socket類和操作方法,下面我們就來以實例講解Python中SocketServer模塊處理網(wǎng)絡請求的用法:
    2016-06-06
  • selenium+python設置爬蟲代理IP的方法

    selenium+python設置爬蟲代理IP的方法

    這篇文章主要介紹了selenium+python設置爬蟲代理IP的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • Python執(zhí)行Shell命令的六種方法

    Python執(zhí)行Shell命令的六種方法

    在 Python 編程中,有時我們需要執(zhí)行一些 shell 命令來完成特定的任務,比如文件操作、系統(tǒng)調(diào)用等,Python 提供了多種內(nèi)建的方法來執(zhí)行這些命令,每種方法都有其適用場景和特點,本文給大家介紹了Python執(zhí)行Shell命令的六種方法,需要的朋友可以參考下
    2024-09-09
  • django日志默認打印request請求信息的方法示例

    django日志默認打印request請求信息的方法示例

    這篇文章主要給大家介紹了關于django日志默認打印request請求信息的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用django具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-05-05
  • NumPy 基本切片和索引的具體使用方法

    NumPy 基本切片和索引的具體使用方法

    這篇文章主要介紹了NumPy 基本切片和索引的具體使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Django中使用celery完成異步任務的示例代碼

    Django中使用celery完成異步任務的示例代碼

    本篇文章主要介紹了Django中使用celery完成異步任務的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Python中的枚舉函數(shù)enumerate()的具體用法

    Python中的枚舉函數(shù)enumerate()的具體用法

    本文主要介紹了Python中的枚舉函數(shù)enumerate()的具體用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • GoReplay中間件python版本使用教程

    GoReplay中間件python版本使用教程

    GoReplay 是一個用于網(wǎng)絡流量錄制和回放的工具,它可以用于測試和優(yōu)化分布式系統(tǒng),這篇文章主要介紹了GoReplay中間件python版本使用教程,需要的朋友可以參考下
    2024-02-02

最新評論