0

我正在接受用户输入并用它创建对象。所以我有一个可接受的对象名称(AE)列表。我想我可以做的是 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")
4

2 回答 2

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])
于 2014-11-19T16:58:18.060 回答
1

我只是无法弄清楚如何将弹出的值正确分配给对象的名称

这样做并不容易,因为这样做并不是很有用。如果您确实让它工作,并且您想稍后使用它怎么办?

name_list.pop(0) = Net(userIP, userMask)
print ?.userMask

?当您不知道使用了哪个变量名时,您会怎么做?

正确的方法是@kindall 的答案,或类似的。但这是可能的(如何通过 while 循环动态创建变量?)但不推荐。

于 2014-11-19T17:04:18.697 回答