1. 程式人生 > >4-9 Python物件的自省機制

4-9 Python物件的自省機制

自省是通過一定的機制查詢到物件的內部結構
Python中提供了很多的方法來查詢物件的內部結構,比如:
hasattr:查詢物件是否有一個特性的屬性
getattr:獲取物件的屬性
setattr:設定物件的屬性
delattr:從一個物件中刪除屬性

舉個例子

class A(object):
    def retrieve(self):
        return "A.retrieve"

class B(object):
    def get_value(self):
        return "B.retrieve"

def func1(obj):
    if
hasattr(obj, 'retrieve'): getattr(obj, 'retrieve')() a=A() b=B() 根據Python的鴨子型別的概念,在這裡我們可以傳遞物件a或者物件b給函式func1, 那麼在程式碼中func1函式中不能確定obj的屬性的,只有執行的時候才知道obj是物件a還是物件b。那麼如何使用obj來操作未知物件的屬性呢?? 就是利用上面的四個方法,可以來操作這種情況,可以用hasattr和getattr來查詢到物件屬性,然後用setattr和delattr來操作屬性