簡體   English   中英

如何使用Python中的字典列表中的值創建類實例?

[英]How do I create class instances using values from a list of dicts in Python?

我有以下課程設置:

class Card(object):
    def __init__(self, name="", attack=0, defense=0, magic=0, shield=0, description=""):
        self.name = name
        self.attack = int(attack)
        self.defense = int(defense)
        self.magic = int(magic)
        self.shield = int(shield)
        self.description = description

我想使用從csv.dictreader創建的字典列表制作Card實例。

這是確定我的cardList返回的方法:

[
{'Magic': '200', 'Shield': '100', 'NameOfCard': 'Knight', 'Attack': '700', 'Defense': '400', 'Description': ''},
{'Magic': '500', 'Shield': '500', 'NameOfCard': 'Mage', 'Attack': '0', 'Defense': '0', 'Description': ''},
{'Magic': '100', 'Shield': '100', 'NameOfCard': 'Peasant', 'Attack': '100', 'Defense': '100', 'Description': ''},
{'Magic': '0', 'Shield': '0', 'NameOfCard': 'Lancer', 'Attack': '400', 'Defense': '100', 'Description': ''},
{'Magic': '100', 'Shield': '200', 'NameOfCard': 'Guardian', 'Attack': '100', 'Defense': '600', 'Description': ''},
...]

我希望能夠使用'NameOfCard'值來命名實例,然后將這些值映射到Card類中__init__方法采用的參數。

我首先想到的是做這樣的事情:

Knight = Card(cardList[0]('NameOfCard')...)

但是調用print Knight.name返回TypeError: 'dict' object is not callable

如何使用字典列表創建Card類的實例?

如果參數名稱與dict鍵相同,則可以使用:

Knight = Card(**cardList[0])

因為它是您首先需要將dict鍵映射到適當的參數名稱。

使用參數解包:

knight = Card(**dict_of_properties)

這會將dict_of_properties擴展為命名參數:

knight = Card(name='foo', stuff='bar')

假設dict_of_properties看起來像:

dict_of_properties = {
    'name': 'foo',
    'stuff': 'bar'
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM