我有课。简而言之,要进行初始化,必须在创建时为其提供一些值:
class Silo:
def __init__(self, id, name, netid, node):
self.id = id
self.name = name
self.node = node
self.netid = netid
我可能有多个思洛存储器,它们是通过sqllite数据库动态创建的。为了清晰起见,我放弃了数据库查询的代码,而是在我的示例中打印了下面的竖井列表:
global siloList # siloList is a list of the Silos objects.
siloList = {} # Initialize
print(silos) # return: [(1, 'Silo 1', 1, 1), (2, 'Silo 2', 1, 4)]
for silo in silos: # loop through silos for each silo
newSilo = Silo(silo[0], silo[1], silo[2], silo[3]) # Create the object from Silo class
siloList[silo[0]] = newSilo # Create a list for each Silo object with the ID as the index
我想根据我输入的名称检索每个对象的ID,这样我就可以处理那个类了
例如:
userInput = "Silo 2"
# Obtain "2" based on input "Silo 2" somehow
siloList[2].netid = 9 # Change the netid with siloList[id]
不过,我不知道如何从该对象中出现的名称获取该对象的id
我发现了一个silo = next((x for x, obj in enumerate(siloList) if obj['name'] == userInput), None)
,但这给了我一个错误TypeError: 'int' object is not subscriptable
,我不太明白如何使它满足我的需要(或者即使它能工作或者什么更好)
谢谢
您可以使用
如果您确定匹配列表正好有一个元素,那么您就可以安全地使用它
待办事项
注意。我猜你的
siloList = {}
实际上是一本字典相关问题 更多 >
编程相关推荐