python 獲取物件資訊

2022-08-25 11:57:24 字數 2913 閱讀 5926

判斷物件型別,使用type()函式

判斷乙個物件是否是函式

使用types模組中定義的常量:

>>> import types

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

true

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

true

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

true

對於class的繼承關係

判斷class的型別,可以使用isinstance()函式。

繼承關係:

object -> animal -> dog -> husky

>>> h = husky()

然後,判斷:

>>> isinstance(h, husky)

true

>>> isinstance(h, dog)

true

h雖然自身是husky型別,但由於husky是從dog繼承下來的,所以,h也還是dog型別

基本型別也可以用isinstance()判斷:

>>> isinstance('a', str)

true

>>> isinstance(123, int)

true

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

>>> isinstance([1, 2, 3], (list, tuple))

true

獲得乙個物件的所有屬性和方法,可以使用dir()函式

呼叫len()函式試圖獲取乙個物件的長度,

實際上,在len()函式內部,它自動去呼叫該物件的__len__()方法

下面的**是等價的:

>>> len('abc')

3

>>> 'abc'.__len__()

3

測試物件的屬性:

>>> class myobject(object):

... def __init__(self):

... self.x = 9

... def power(self):

... return self.x * self.x

...

>>> obj = myobject()

>>> hasattr(obj, 'x') # 物件obj有屬性'x'嗎?

true

>>> obj.x

9

>>> hasattr(obj, 'y') # 有屬性'y'嗎?

false

>>> setattr(obj, 'y', 19) # 設定乙個屬性'y'

>>> hasattr(obj, 'y') # 有屬性'y'嗎?

true

>>> getattr(obj, 'y') # 獲取屬性'y'

19

>>> obj.y # 獲取屬性'y'

19

>>> getattr(obj, 'z', 404) # 獲取屬性'z',如果不存在,返回預設值404

404

假設希望從檔案流fp中讀取影象,首先要判斷該fp物件是否存在read方法,

如果存在,則該物件是乙個流,如果不存在,則無法讀取

def readimage(fp):

if hasattr(fp, 'read'):

return readdata(fp)

return none

python中獲取物件資訊

拿到乙個變數,除了用isinstance 判斷它是否是某種型別的例項外,還有沒有別的方法獲取到更多的資訊呢?例如,已有定義 class person object def init self,name,gender self.name name self.gender gender class st...

筆記 python獲取物件資訊

拿到乙個物件的引用時,如何知道這個物件是什麼型別 有哪些方法?目錄 type isinstance dir type 函式返回對應的class型別。判斷乙個物件是否是函式用types模組中的各種型別作對比。import types def fn pass type fn types.function...

Python基礎(獲取物件資訊)

import types print type abc str true print type 123 int true deff1 pass print type f1 types.functiontype true print type abs types.builtinfunctiontype...