筆記 python獲取物件資訊

2021-10-10 06:59:56 字數 2319 閱讀 3358

拿到乙個物件的引用時,如何知道這個物件是什麼型別、有哪些方法?

目錄

type()

isinstance()

dir()

type()函式返回對應的class型別。判斷乙個物件是否是函式用types模組中的各種型別作對比。

>>> import types

>>> def fn():

... pass

...>>> type(fn)==types.functiontype

true

>>> type(abs)==types.builtinfunctiontype

true

>>> type(lambda x: x)==types.lambdatype

true

>>> type((x for x in range(10)))==types.generatortype

true

要判斷class的型別,可以使用isinstance()函式。isinstance()判斷的是乙個物件是否是該型別本身,或者位於該型別的父繼承鏈上。

如這裡student是person的子類:

可以看到stu1既是student類,又是person類;person1只是person類,不是student類

還可以判斷乙個變數是否是某些型別中的一種:

通過內建的一系列函式,我們可以對任意乙個python物件進行剖析,拿到其內部的資料。

要獲得乙個物件的所有屬性和方法,可以使用dir()函式,它返回乙個包含字串的list,包含了該物件的所有屬性和方法。

>>> dir('abc')

['__add__', '__class__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill']

類似__***__的屬性和方法在python中都是有特殊用途的,比如__len__方法返回長度。在python中,如果你呼叫len()函式試圖獲取乙個物件的長度,實際上,在len()函式內部,它自動去呼叫該物件的__len__()方法。

getattr()setattr()以及hasattr(),我們可以直接操作乙個物件的狀態。

hasattr(obj,'a')       判斷obj物件是否有屬性/方法a  (注意,不能判斷出私有屬性/方法)

getattr(obj,'a')        獲取obj物件的屬性/方法a的值(如果獲取乙個不存在的屬性/方法,會返回乙個錯誤attributeerror。為避免出錯導致程式停止,可以傳入乙個default引數 getattr(obj, 'a', 404),如果屬性/方法a不存在,就返回預設值404)

setattr(obj,'a',100) 設定obj物件的屬性/方法a的值

如下,person1物件的屬性主要有 'high',方法主要有'print_name', 'print_age',執行結果入下

python學習筆記 獲取物件資訊

當我們拿到乙個物件的引用時,如何知道這個物件是什麼型別 有哪些方法呢?首先,我們來判斷物件型別,使用type 函式 基本型別都可以用type 判斷 type 123 type str type none 如果乙個變數指向函式或者類,也可以用type 判斷 type abs type a 但是type...

python 獲取物件資訊

判斷物件型別,使用type 函式 判斷乙個物件是否是函式 使用types模組中定義的常量 import types type abs types.builtinfunctiontype true type lambda x x types.lambdatype true type x for x i...

學習筆記 獲取物件資訊

學習日期 2016年9月27日 學習課程 獲取物件資訊 廖雪峰的官方 在本節中,我學習了可以通過type 或者isinstance 可以獲得和判斷物件的型別資訊,他們兩者的不同,在於type 不會認為子類是一種父類型別,isinstance 會認為子類是一種父類型別。還學習了使用dir 可以獲得乙個...