重寫實例物件上的特殊方法
在Python 中,名稱被雙下劃線包圍的特殊方法通常不會在實例上調用,而是在實例上調用他們的班級。這是標準解釋器 CPython 的實作細節。因此,不可能直接在實例上重寫 __repr__() 並期望使用自訂實作。
例如,考慮以下程式碼:
class A(object): pass def __repr__(self): return "A" from types import MethodType a = A() print(a) # Output: <__main__.a object at> print(repr(a)) # Output: '<__main__.a object at>'</__main__.a></__main__.a>
我們可以看,repr(a) 不會產生「A」的預期結果。
要解決此限制,必須定義一種呼叫原始實作的新方法,如下所示:
class A(object): def __repr__(self): return self._repr() def _repr(self): return object.__repr__(self)
現在,您可以透過取代_repr() 來覆寫實例上的__repr__():
setattr(a, "_repr", MethodType(my_repr, a, a.__class__))
其中my_repr 是所需的自訂實作。
以上是可以直接在實例上重寫 Python 的特殊方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了版本3.10中介紹的Python的新“匹配”語句,該語句與其他語言相同。它增強了代碼的可讀性,並為傳統的if-elif-el提供了性能優勢

Python中的功能註釋將元數據添加到函數中,以進行類型檢查,文檔和IDE支持。它們增強了代碼的可讀性,維護,並且在API開發,數據科學和圖書館創建中至關重要。

本文討論了Python中的單位測試,其好處以及如何有效編寫它們。它突出顯示了諸如UNITSEST和PYTEST之類的工具進行測試。

文章討論了Python的\ _ \ _ Init \ _ \ _()方法和Self在初始化對象屬性中的作用。還涵蓋了其他類方法和繼承對\ _ \ _ Init \ _ \ _()的影響。

本文討論了python中@classmethod,@staticmethod和實例方法之間的差異,詳細介紹了它們的屬性,用例和好處。它說明瞭如何根據所需功能選擇正確的方法類型和DA

Inpython,YouAppendElementStoAlistusingTheAppend()方法。 1)useappend()forsingleelements:my_list.append(4).2)useextend()orextend()或= formultiplelements:my_list.extend.extend(emote_list)ormy_list = [4,5,6] .3)useInsert()forspefificpositions:my_list.insert(1,5).beaware


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具