Python高階 物件自省

2021-09-25 19:14:58 字數 1561 閱讀 6997

自省(introspection),在計算機程式設計領域裡,是指在執行時來判斷乙個物件的型別的能力。

它是python的強項之一。python中所有一切都是乙個物件,而且我們可以仔細勘察那些物件。

python還包含了許多內建函式和模組來幫助我們。

dir用於自省的最重要的函式之一。

它返回乙個列表,列出了乙個物件所擁有的屬性和方法。

my_list = [1, 2, 3]

dir(my_list)

# output: ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',

# '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',

# '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__',

# '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__',

# '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__',

# '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__',

# 'remove', 'reverse', 'sort']

上面的自省給了我們乙個列表物件的所有方法的名字。

當你沒法回憶起乙個方法的名字,這會非常有幫助。

如果我們執行dir()而不傳入引數,那麼它會返回當前作用域的所有名字。

dir()

# ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'my_list']

type函式返回乙個物件的型別。

print(type(''))

# output: print(type())

# output: print(type({}))

# output: print(type(dict))

# output: print(type(3))

# output:

id()函式返回任意不同種類物件的唯一id。

name = "yasoob"

print(id(name))

# output: 139972439030304

inspect模組也提供了許多有用的函式,來獲取活躍物件的資訊。

import inspect

print(inspect.getmembers(str))

Python 物件自省

自省在計算機程式設計領域裡,是指在執行時判斷乙個物件的型別和能力。能夠返回乙個列表,列舉了 乙個物件所擁有的屬性和方法。my list 1 2,3 print dir my list 這有助於我們尋找方法。返回乙個物件的型別。print type print type print type prin...

Python 物件導向 反射 自省

反射 程式可以訪問,檢測和修改它本身狀態或行為的一種能力 自省 下面就介紹四種實現自省的函式,適用於類和物件 1,判斷object中有沒有乙個name字串對應的屬性或者方法 hasattr object,name 2,獲取object中name字串對應的屬性值或者方法位址,其中default引數的作...

python 物件自省工具與super

自省是通過一定的機制查詢到物件的內部結構 較為常減的函式用法有 dir type hasattr isinstance 通過這些函式,我們能夠在程式執行時得知物件的型別,判斷物件是否存在某個屬性,訪問物件的屬性。class person object name class student perso...