鍍金池/ 問答/Python/ python使用字典傳參數 創(chuàng)建構造函數

python使用字典傳參數 創(chuàng)建構造函數

class settings:
    def __init__(self,leds):
        for i in leds:
            #print(i,leds[i])
            self.i = leds[i]

leds={'redb':4,'gerd':27,'yelb':29}
s=settings(leds)

我是想把leds這個字典傳入這個構造函數,然后直接用遞歸生成,但是這樣寫是報錯的,有什么好辦法把這種類型的字典,根據item和對應的值直接構造函數的簡便方法么?

回答
編輯回答
未命名

python中屬性管理的特殊方法有__getattr__、 __getattribute____setattr__、 __delattr__、 __dir__等。__setattr__從字面看就知道可以用來給對象綁定屬性。

class settings(object):
    def __init__(self, leds):
        for k, v in leds.items():
            self.__setattr__(k, v)

上面回答提到的__dict__特殊屬性是存儲了對象的屬性名和屬性值的字典。所以直接修改__dict__屬性也可以用來改變對象屬性。

2018年8月9日 17:53
編輯回答
話寡
class settings:
    def __init__(self,leds):
        for i in leds:
            self.__dict__[i] = leds[i]

leds={'redb':4,'gerd':27,'yelb':29}
s=settings(leds)
2018年3月20日 20:50