天天看點

python 内置函數isinstance(),hasattr(),getattr(),setattr()的介紹

此文章已不再更新,内容較淺顯,請檢視最新文章:

《Python 的自省》

---------------------------------------- 分隔符 ---------------------------------------------

python有很多内置函數很好用,也非常常用。今天來介紹幾個常用的

1. isinstance(),用于判斷對象類型,是否在一個範圍内,如果在則傳回True,反之傳回False

例如:

a= 'aaa'
isinstance(a,(str,int))   #屬于str
>>>True
isinstance(a,(int,float))   #都不屬于
>>>False
           

也是可以作為一些判斷,判斷對象是否屬于一些類等。

class A(object):
	pass
s =A()
isinstance(s,(A,str,int,float))   #屬于A類
>>>True
           

2. hasattr(object,'x') 函數,用于判斷對象object是否含有x屬性或方法,有則傳回True,否則傳回False

比如:

A = {}
hasattr(A,'keys')
>>>True 
           

可以用于一些判斷,比如類的屬性的判斷或方法判斷等等

3. getattr(object,'x') ,擷取對象object的x屬性或方法,有就列印出來,屬性會直接列印出值,方法則列印記憶體機關,沒有則會報錯

class A(object):
	a ='a'
	def s(self):
		print('s')
getattr(A,'name')  
>>>a
getattr(A,'abc')  
>>>報錯  ## 沒有這個屬性或方法時,報錯
getattr(A,'abc','ok')  
>>>ok     ## 沒有這個屬性或方法時傳回給定的值
           

4.  setattr(A,'abc','123')  為對象的屬性指派 ,如果屬性不存在這建立此屬性,作為操作,沒有傳回值

設定後:  getattr(A,'abc')

>>>123

結合一起可以實作,判斷對象是否有指定屬性,若沒有,則建立并指派

get(A,'xxx',set(A,'xxx','456'))   擷取A對象的xxx屬性,有就列印出來,沒有就建立并指派為'456'

這些常見的内置函數還是非常好用的。