Python 中
getattr 與Python 中getattribute__ 深入研究之前__getattr__ 和 __getattribute__ 之間的區別,值得澄清「新式類」的概念。在Python中,有兩種類型的類別:新式和舊式。新式類別是顯式或隱式從物件類別繼承的類,而舊式類別是 Python 2.x 中沒有定義基底類別的類別。然而,這種差異與 __getattr__ 和 __getattribute__ 之間的選擇無關。 getattr 與getattribute__getattr__ 是當存取在物件或其任何基礎上找不到的字典或其任何基類的屬性時調用。它允許您實作回退機制來檢索物件本身不存在的屬性。此方法通常用於提供動態屬性訪問,例如在元編程場景中。另一方面,在存取物件上的任何屬性時都會呼叫 __getattribute__,無論它是否存在。它在檢查物件的字典或基底類別之前調用。實作 __getattribute__ 可能很棘手,因為它需要仔細處理以防止無限遞歸。 getattr 或getattribute總而言之,當您想要處理丟失屬性的屬性檢索時,應該使用__getattr__ ,提供後備機制。 __getattribute__ 雖然更通用,但正確實作可能會更複雜,並且對於大多數實際目的來說通常是不必要的。
以上是在 Python 中什麼時候應該使用 `__getattr__` 和 `__getattribute__` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!