我正在接受用户输入并使用它创建对象。所以我有一个可接受的对象名称列表(A-E)。我想我可以做的是pop(0)并使用返回值作为对象的名称。这样,在进入时永远不会有重复的对象名称。这是我到目前为止我无法弄清楚如何正确地将弹出值分配给对象的名称。(Net是程序开头的一个定义的类)
userIP = None
name_list = ['A', 'B', 'C', 'D', 'E']
while True:
if userIP == 'end':
break
userIP = input("Enter IP (type 'end' to exit): ")
userMask = input("Enter Mask: ")
name_list.pop(0) = Net(userIP, userMask)
print("The object just created would print here")
答案 0 :(得分:5)
将结果放入字典中。不要尝试使用指定的名称创建变量。那种方式就是疯狂。
net_dict = {}
# ...
name = name_list.pop(0)
net_dict[name] = Net(userIP, userMask)
print(net_dict[name])
如果您将它们放在容器中,您可能会发现您实际上并不需要这些名称。换句话说,的名称是什么?如果答案只是"以保持它们的某种顺序,"使用清单:
net_list = []
# ...
net_list.append(Net(userIP, userMask))
print(net_list[-1])
答案 1 :(得分:1)
我无法弄清楚如何正确地将弹出值分配给对象的名称
这样做并不容易,因为这样做并不是很有用。如果你让它工作,你想稍后使用它会怎么样?
name_list.pop(0) = Net(userIP, userMask)
print ?.userMask
当您不知道使用了哪个变量名时,您为?
添加了什么?
正确的方法是@ kindall的答案,或类似的。但有可能(How can you dynamically create variables via a while loop?)但不推荐。