1. 程式人生 > 實用技巧 >python中的getattr()、setattr()、hasattr() 函式的使用

python中的getattr()、setattr()、hasattr() 函式的使用

python中的getattr()、setattr()、hasattr() 三個函式均是對類屬性或方法的操作,其中:getattr()用於獲取類或例項中指定方法獲取屬性的值;setattr()用於設定類或例項中屬性或方法;hasattr()用於判斷類或例項中是否存在指定的屬性或方法;

getattr() 用法詳解:

getattr(object, name, default=None):其中object:接收物件或物件例項;name:接收要獲取的屬性或方法名;default:如果該類或例項不存在則返回的預設值,如果不傳此引數且該類沒有要獲取的屬性或方法時將會丟擲AttributeError異常;

 1 class User:
 2     name = ""
 3     age = 0
 4     sex = ""
 5 
 6     def __init__(self,name,age,sex):
 7         self.name = name
 8         self.age = age
 9         self.sex = sex
10 
11 if __name__ == '__main__':
12     user = User("張三",20,"")
13     print(getattr(user, "addr","沒有該屬性或方法"))  # 輸出結果:沒有該屬性或方法
14 print(getattr(user,"name"))            # 輸出結果:張三

setattr() 用法詳解:

setattr(x, y, v): 其中:x:表示要設定的類或例項;y:表示要設定的屬性或方法;v:表示要設定的屬性或方法的值

class User:
    name = ""
    age = 0
    sex = ""

    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

if
__name__ == '__main__': user = User("張三",20,"") # ------------------為user例項設定屬性------------------------ setattr(user,"addr","北京") # 設定user例項的addr屬性值為北京 print(user.addr) # 返回結果:北京 print(getattr(User, "addr","沒有該屬性或方法")) # 為例項增加屬性或方法後,類中國是不存在該屬性或方法的 # -------------------通過lambda為user例項設定方法------------- setattr(user,"showInfo",lambda :print("顯示使用者資訊")) user.showInfo() # 返回結果:顯示使用者資訊 # -------------------通過編寫函式為user例項設定方法------------- def showInfo(name,sex,age): print("姓名:"+name, "性別:"+sex, "年齡:%s"%age ) setattr(user,"showInfo",showInfo) user.showInfo(user.name,user.sex,user.age) # 輸出結果為:姓名:張三 性別:男 年齡:20 # 如果通過setattr設定已存在的屬性或方法將會覆蓋原來的屬性或方法

hasattr() 用法詳解:

hasattr(*args, **kwargs):第一個引數傳入:類或類例項;第二個引數傳入:要判斷的屬性或方法名;結果返回:True或False

 1 class User:
 2     name = ""
 3     age = 0
 4     sex = ""
 5 
 6     def __init__(self,name,age,sex):
 7         self.name = name
 8         self.age = age
 9         self.sex = sex
10 
11 if __name__ == '__main__':
12     user = User("張三",20,"")
13     print(hasattr(user, "name"))        # 返回結果:True
14     print(hasattr(user, "addr"))        # 返回結果:False