Python 中的
getattr 與getattribute
瞭解__getattr__ute 和__getattrib__ 之間。的區別至關重要當使用Python 物件時。這兩種方法都旨在控制如何從物件中檢索屬性,但它們執行不同的功能並具有特定的用例。
新樣式類
深入研究之前__getattr__ 和 __getattribute__ 之間的區別,值得澄清“新式類”的概念。在Python中,有兩種類型的類別:新式和舊式。新式類別是顯式或隱式從物件類別繼承的類,而舊式類別是 Python 2.x 中沒有定義基底類別的類別。然而,這種差異與 __getattr__ 和 __getattribute__ 之間的選擇無關。
getattr vs getattribute
__getattr__ 是當存取在物件的字典或其任何基底類別中找不到的屬性時調用。它允許您實作回退機制來檢索物件本身不存在的屬性。此方法通常用於提供動態屬性訪問,例如在元編程場景中。另一方面,在存取物件上的任何屬性時都會呼叫
__getattribute__,無論該屬性是否存在。它在檢查物件的字典或基底類別之前調用。實作 __getattribute__ 可能很棘手,因為它需要仔細處理以防止無限遞歸。
何時使用getattr 或getattribute
總而言之,當您想要處理遺失屬性的屬性檢索時,應該使用__getattr__ ,提供後備機制。 __getattribute__ 雖然更通用,但正確實作可能會更複雜,並且對於大多數實際目的來說通常是不必要的。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3