Python- использовать значение pop как имя объекта

Я принимаю пользовательский ввод и создаю объекты с его помощью. Итак, у меня есть список допустимых имен объектов (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")

2 ответа

Решение

Положите результаты в словаре. Не пытайтесь создавать переменные с указанными именами. Так лежит безумие.

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])

Я просто не могу понять, как правильно присвоить вытесненное значение имени объекта

Это нелегко сделать, потому что это не очень полезно. Что если вы заставите его работать, и вы захотите использовать его позже?

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

Что вы кладете для ? когда вы не знаете, какое имя переменной использовалось?

Правильный подход к этому - ответ @kindall, или подобный. Но это возможно ( как вы можете динамически создавать переменные через цикл while?), Но не рекомендуется.

Другие вопросы по тегам