1. 程式人生 > >__getattr__和__getattribute__的區別

__getattr__和__getattribute__的區別

    對於一個物件來說,你需要管理這個物件的屬性。

    通常我們通過instance.attribute來獲取物件的屬性。

    但是呢,有的時候我們可能需要更多的控制。

    通過__getattr__你可以用來處理instance並不擁有的屬性。

class Color:
    a = 'red'
    b = 'blue'
    def __getattr__(self, item):
        return 'whatever'
    
c = Color()
c.a #'red'
c.b #'blue'
c.c #'whatever'
c.d #'whatever'

      顯然,Color類並不擁有屬性c和d,但是可以通過__getattr__對其並不包含的屬性進行控制

     如果你需要抓取每個屬性,而不管這個屬性是否存在,那麼可以使用__getattribute__