Python中類對象的動態賦值


問題引出

  當需要將一個數據字典中的數據保存到類對象中時,用動態賦值的方式會比單獨屬性賦值更方便。

 

動態賦值的基礎

  • hasattr(a,b):判斷對象a中是否有屬性b
  • getattr(a,b,c):從對象a中取屬性b的值,如果b不存在則返回c(參數c可以不寫)
  • setattr(a,b,c):為對象a添加一條屬性b其值為c,如果已存在b則替代原始值

 

示例

  我們先構建測試類User和數據字典:

class User():
    def __init__(self):
        self.name = ''
        self.password = ''

user = User()
data = {'name':'小明','password':'12345','age':2}

 

  為了將data中的數據保存到user對象中去並且把data中多余的屬性去掉,我們可以為User添加一個類方法set_data專門用於動態賦值:

class User():
    def __init__(self):
        self.name = ''
        self.password = ''

    def set_data(self, data):
        for key,value in data.items():   # 遍歷數據字典
            if hasattr(self,key):        # 如果存在同名屬性
                setattr(self,key,value)  # 則添加屬性到對象中

user = User()
user.set_data(data)
print(user.__dict__)

# 結果:{'name': '小明', 'password': '12345'}

 

總結

  hasattr\getattr\setattr三個函數實現了類對象的動態賦值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM