Python 如何判斷物件是否是檔案物件

2022-05-28 08:45:12 字數 1281 閱讀 9258

python2 有一種比較可靠的方式就是判斷物件的型別是否是file型別。因此可以使用type函式或者isinstance函式實現。

當然type函式無法對繼承得來的子類起作用

>>> f = open('./text', 'w')

>>> type(f)

>>> type(f) == file

true

>>> class myfile(file):

... pass

...>>> mf = myfile('./text')

>>> type(mf)

>>> type(mf) == file

false

isinstancne是推薦的判斷型別時方法,通常情況下都應該選擇此方法。isinstance也可以對子類起作用。

>>> f = open('./text', 'w')

>>> isinstance(f, file)

true

>>> class myfile(file):

... pass

...>>> mf = myfile('./text')

>>> isinstance(mf, file)

true

在 python3 中,官方取消了file這一物件型別,使得 python2 中的判斷方法無法在 python3 中使用。

因此在 python3 中只能通過鴨子型別的概念判斷物件是否實現了可呼叫的``read,write,close方法, 來判斷物件是否是乙個檔案物件了。

def isfilelike(f):

try:

if isinstance(getattr(f, "read"), collections.callable) \

and isinstance(getattr(f, "write"), collections.callable) \

and isinstance(getattr(f, "close"), collections.callable):

return true

except attributeerror:

pass

return false

當然這個方法也可以在 python2 中使用

判斷物件是否是空物件

object.keys 方法會返回乙個由乙個給定物件的自身可列舉屬性組成的陣列。通過陣列中屬性的個數判斷是否為空物件。const empty object.keys empty length 0 empty.constructor object 而且需要判斷物件的constructor屬性是否等於o...

如何判斷物件是否死亡

主要的方法分為兩種 引用計數演算法和可達性分析演算法,目前常用的就是可達性分析演算法 對乙個物件新增乙個引用的計數器,當該物件被引用依次那麼計數器 1,如果引用被釋放,那麼計數器 1,這樣根據物件最終引用次數為0時,將該物件 缺點 當兩個物件互相的引用,引用計數器就無法得到為0,那麼也就無將物件就行...

如何判斷Java物件是否存活

該種方法是每乙個物件有乙個引用計數屬性,新增乙個引用時計數加1,引用釋放時計數減1,計數為0時表示沒用引用,則代表該物件可以 這種方法簡單,但是無法解決物件相互迴圈引用的問題。該種方法是從gc roots開始向下搜尋,搜尋所走過的路徑為引用鏈。當乙個物件到gc roots沒用任何引用鏈時,則證明此物...