在列表中存储类参数

时间:2014-07-17 17:23:21

标签: python list class python-2.7 arguments

最近我一直在研究基于文本的游戏作为个人项目。没有真正的理由,仅仅是为了它。我通常会非常精通Python(我已经完成了整个CodeCademy的Python课程并完成了我自己的研究),但是我发现了一些我想确保在实现之前能够正常工作的东西。

基本上,是否可以将类的参数嵌套到列表中?

这是一个类似于我正在做的例子:

class Item(object):
    def __init__(self, name, weight):
         self.name = name
         self.weight = weight

tempDict = {
     'flashlight' = ['flashlight',5],
}

flashlight1 = Item(tempDict['flashlight'])

print flashlight1.name

应该返回:

flashlight

我真的希望这会奏效。我有一个完整的ID结构,依赖于这个工作。如果没有,我怎么能做类似的事情,这样我可以有一个规定的项目和基础值列表,我可以分配给具有ID的特定项目?

提前致谢。

2 个答案:

答案 0 :(得分:3)

如果您unpack tempDict['flashlight']放置*,它将会有效:

>>> class Item(object):
...     def __init__(self, name, weight):
...          self.name = name
...          self.weight = weight
...
>>> tempDict = {
...      'flashlight' : ['flashlight',5],
... }
>>> flashlight1 = Item(*tempDict['flashlight'])
>>> print flashlight1.name
flashlight
>>> print flashlight1.weight
5
>>>

在上面的演示中:

flashlight1 = Item(*tempDict['flashlight'])

相当于:

flashlight1 = Item('flashlight', 5)

答案 1 :(得分:0)

如果您使用字典而不是列表来存储参数,那么您的参数字典会更清晰:

tempDict = {
    'flashlight': { 'name': 'flashlight', 'weight': 5 }
}
flashlight1 = Item(**tempDict['flashlight'])