日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

第8.15节 Python重写自定义类的__repr__方法

發布時間:2024/7/5 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第8.15节 Python重写自定义类的__repr__方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 引言
前面兩節分別介紹了Python類中的__str__和__repr__方法的作用和語法,所有新式類都支持這兩個方法,因為object類實現了這兩個方法,但實際上各位開發者在自定義類的過程中,應該重寫相關方法,特別是__str__輸出的應該是用戶關注的容易理解的信息,因此對那些負責與客戶交互的類,至少更應該重寫__str__方法。
二、 重寫__repr__方法
object類提供的__repr__方法,只是簡單輸出模塊名、類名以及對象的ID信息,如果開發者要輸出開發人員足夠知悉的屬性,就需要重寫該方法。
重寫__repr__方法注意:

  • __repr__方法是實例方法,因此帶一個參數self,也只能帶這個參數;
  • 輸出的信息盡可能滿足開發者的要求,信息必須詳盡和準確;
  • 可以調用父類的__repr__方法,也可以不調用,需要看開發時輸出信息的安排,老猿建議最好調用,這樣不用子類開發者去考慮父類的信息怎么輸出。
    三、 例子
  • 例子說明
    本節利用Car類來說明__repr__方法,在類中重寫了__repr__方法,返回的信息包括:
  • 證明調用了重寫方法的“In repr:”提示;
  • 調用repr(self.class),id(self)獲取的對象的類名和ID基礎信息;
  • 使用__dict__特殊屬性輸出類的自定義屬性及值的字典數據。
  • 案例代碼
    1> 類定義
  • class Car(): def __init__(self,brand,type,color,weight,oilcostper100km):self.brand = brandself.type = typeself.oilcostper100km = oilcostper100kmself.color = colorself.weight = weightdef __repr__(self):s="In __repr__:\n <{} object at {:#016x}>\n".format(repr(self.__class__),id(self) )#使用類相關的信息輸出類名和實例IDs+=super().__repr__() #直接調用object.__repr__方法輸出類信息和實例ID#通過實例的self.__dict__獲取實例的詳細屬性信息,注意使用了repr函數去獲取字典信息字符串s+='\n'+repr(self.__dict__)return s

    2> 實例定義及查看信息()

    car = Car('雪佛蘭','科帕奇','白色',1.8,10) car #查看實例信息,此時會調用__repr__方法 print(car) #查看實例信息,此時會調用__str__方法,但沒有重寫__str__方法,效果會怎樣?
  • 案例截圖
  • 案例總結
    通過《第8.13節 Python類中內置方法的__repr__詳解》知道,沒有重寫__repr__方法時,調用的是object類的__repr__方法,僅輸出簡單的類信息和ID信息。通過上述案例說明:
    1> 重寫__repr__方法后,查看對象會觸發重寫方法的調用,其他觸發方式請見《第8.13節 Python類中內置方法__repr__詳解》,在例子中沒有再展開介紹;
    2>object類__repr__方法輸出結果與repr(self.class),id(self)獲取的基礎信息相同,而直接調用object類__repr__方法更簡單,因此老猿建議對基礎信息的輸出還是直接調用父類的方法輸出;
    3> 使用print(car)應該輸出__str__方法返回的內容,但實際輸出的是重寫__repr__方法輸出的內容。這是因為自定義類沒有重寫__str__方法的情況下,Python會直接調用__ repr __方法輸出,要輸出單獨的__str__信息需要重寫__str__方法,這個在下節將進行驗證。
  • 本節結合案例介紹了 __repr__方法的重寫,可以看到通過重寫該方法如果輸出數據得當,相關信息有利于程序調試和跟蹤。
    老猿Python系列文章用于逐步介紹老猿學習Python后總結的學習經驗,這些經驗有助于沒有接觸過Python的程序員可以很容易地進入Python的世界。
    歡迎大家批評指正,謝謝大家關注!

    轉載于:https://www.cnblogs.com/LaoYuanPython/p/11144509.html

    總結

    以上是生活随笔為你收集整理的第8.15节 Python重写自定义类的__repr__方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。