Моя проблема
в init Я объявляю две переменные списка, которые называются nlist
и rlist
.
Затем в методе add_neighour
Я добавляюобъект (router2) с именем router2.__routername
для списка объектов с именем self.nlist
.
class Router:
def __init__(self, routername):
self.__routername = routername
self.nlist = []
self.rlist = []
def print_info(self):
print(self.nlist)
print(" ", self.__routername, sep="")
print(" N: ", ", ".join(sorted(self.nlist)), sep="")
print(" R: ", ", ".join(sorted(self.rlist)), sep="")
def add_neighbour(self, router2):
self.nlist.append(router2.__routername)
print(self.nlist)
Я вызываю код внутри while True, который ждет определенной команды:
Команда P предназначена для печати информации
if command == "P":
routername = input("Enter router name: ")
if routername not in mydict:
print("Router was not found.")
else:
router = Router(routername)
router.print_info()
Команда C предназначена для объединения двух маршрутизаторов.(например, добавление имени router2s router2.__routername
в список соседей self.nlist
router1.
Это происходит class Router
внутри метода add_neighbour
, который принимает другой маршрутизатор в качестве параметра.
elif command == "C":
router1 = input("Enter 1st router: ")
router2 = input("Enter 2nd router: ")
router1 = Router(router1)
router2 = Router(router2)
router1.add_neighbour(router2)
router2.add_neighbour(router1)
Добавление идет нормально, и когда я print(self.nlist)
в конце показывает, что список был обновлен с добавленным элементом, который я хотел, однако при вызове функции print_info
и попытке печати sorted(self.nlist)
Она печатаетпустой список.
Понятия не имею, почему. Должен ли я объявить список объектов другим способом / местом?
или
добавить значения в список по-другому?
моя цель: успешно напечатать self.nlist
в методе print_info
. Успешная печать означает, что он печатает что-то еще, кроме пустого списка.
Я пыталсяищу ответы из нескольких постов. Извините, если этот пост дублирован и ужасно написан.
Весь код: (в процессе, как вы можете видеть ...)
class Router:
def __init__(self, routername):
self.__routername = routername
self.nlist = []
self.rlist = []
def print_info(self):
print(self.nlist)
print(" ", self.__routername, sep="")
print(" N: ", ", ".join(sorted(self.nlist)), sep="")
print(" R: ", ", ".join(sorted(self.rlist)), sep="")
def add_neighbour(self, router2):
self.nlist.append(router2.__routername)
print(self.nlist)
def main():
mydict = {}
routerfile = input("Network file: ")
while True:
command = input("> ")
command = command.upper()
if command == "P":
routername = input("Enter router name: ")
if routername not in mydict:
print("Router was not found.")
else:
router = Router(routername)
router.print_info()
pass
elif command == "PA":
pass
elif command == "S":
pass
elif command == "C":
router1 = input("Enter 1st router: ")
router2 = input("Enter 2nd router: ")
router1 = Router(router1)
router2 = Router(router2)
router1.add_neighbour(router2)
router2.add_neighbour(router1)
pass
elif command == "RR":
pass
elif command == "NR":
routername = input("Enter a new name: ")
router = Router(routername)
if routername not in mydict:
mydict[routername] = router
else:
print("Name is taken.")
pass
elif command == "NN":
pass
elif command == "Q":
print("Simulator closes.")
return
else:
print("Erroneous command!")
print("Enter one of these commands:")
print("NR (new router)")
print("P (print)")
print("C (connect)")
print("NN (new network)")
print("PA (print all)")
print("S (send routing tables)")
print("RR (route request)")
print("Q (quit)")
main()