第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python從字典創(chuàng)建類實例

Python從字典創(chuàng)建類實例

鴻蒙傳說 2023-03-08 15:28:09
我有很多字段可以在我的程序運行時更改的類,但是當我在我的init中創(chuàng)建新對象時,我只能更改其中的一些,我想將這些更改保存到 JSON 文件中,以后可以創(chuàng)建具有這些變量的新對象。除了讓我的init接受 100 個參數(shù)之外,還有其他方法嗎?換句話說,我希望它是這樣的:class MyClass:    def __init__(self, q, w):        self.q = q        self.w = w        self.e = 30        self.r = 40        a = MyClass(10,20)dct = {'q': 100, 'w': 200, 'e': 300, 'r': 400}print('before:', tmp.q, tmp.w, tmp.e, tmp.r)for i in dct:    #do sth hereprint('after:', tmp.q, tmp.w, tmp.e, tmp.r)before: 10 20 30 40after: 100 200 300 400
查看完整描述

2 回答

?
慕絲7291255

TA貢獻1859條經(jīng)驗 獲得超6個贊

以下是如何使用關鍵字參數(shù)來做到這一點:


class MyClass:

    def __init__(self, **q):

        self.__dict__.update(q)


a = MyClass(a=10, b=20, c=50, d=69)


print(a.a)

print(a.b)

print(a.c)

print(a.d)

輸出:


10

20

50

69

用字典:

class MyClass:

    def __init__(self, **q):

        self.__dict__.update(q)

        

dct = {'q': 100, 'w': 200, 'e': 300, 'r': 400}


a = MyClass(**dct)


print(a.q, a.w, a.e, a.r)

輸出:


100 200 300 400


查看完整回答
反對 回復 2023-03-08
?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

與其操縱類實例__dict__,我建議使用該setattr方法。


class MyClass:

    def __init__(self, new_vals):

        for k, v in new_vals.items():

            setattr(self, k, v)


dct = {'q': 100, 'w': 200, 'e': 300, 'r': 400}


a = MyClass(dct)


print(a.q, a.w, a.e, a.r)

恕我直言,內部結構有兩個前導下劃線是有原因的__dict__。我的一般建議是盡可能避免訪問任何帶有兩個前導下劃線的屬性/方法。另請參閱下文以獲取對考慮此主題的 Python 文檔的參考。


如果你想把它減少到一行,你也可以使用“虛擬”列表理解。下劃線捕獲None返回值,但不一定是必需的。


class MyClass:

    def __init__(self, new_vals):

        _ = [setattr(self, k, v) for k, v in new_vals.items()]

對有關操作內置__dict__屬性的 Python 文檔的簡短參考:


每個模塊的特殊屬性是__dict__. 這是包含模塊符號表的字典。__dict__修改這個字典實際上會改變模塊的符號表,但是不能直接給屬性賦值(你可以寫m.__dict__['a'] = 1,它定義m.a為1,但你不能寫m.__dict__ = {})。不建議直接修改。__dict__


請參閱有關內置類型的 Python 文檔


查看完整回答
反對 回復 2023-03-08
  • 2 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號