Пытаюсь построить график. Для инициализации я хотел либо начать с набора узлов и ребер, либо нет. Поэтому я дал им значение по умолчанию None. Или я так подумал:
def Graph():
def __init__(self, nodes=None, edges=None, msg = "test"):
"""
assumes that the node and edge lists are the respective objects
"""
if nodes == None:
self.nodes = []
else:
self.nodes = nodes
if edges == None:
self.edges = []
else:
self.edges = edges
self.node_names = []
for node in nodes:
self.node_names.append(node.get_name())
self.msg = msg
(часть msg предназначена для тестирования кода на самом простом примере)
Что я получил:
g = Graph(msg = "33")
Traceback (most recent call last):
File "<ipython-input-29-cc459c9baef3>", line 1, in <module>
g = Graph(msg = "33")
TypeError: Graph() got an unexpected keyword argument 'msg'
Кто-нибудь может мне помочь? Это, наверное, до смешного простая вещь, но я просто не вижу этого, и я тут немного схожу с ума...
Вы определили Graph
не как класс, а как обычную функцию.
Замените def Graph():
на class Graph:
.
Ладно, из всех ошибок, которые я когда-либо совершал, это была, наверное, самая глупая... Спасибо!
Объявите «График» как класс.
class Graph():
def __init__(self, nodes=None, edges=None, msg = "test"):
"""
assumes that the node and edge lists are the respective objects
"""
..
вы, вероятно, хотите
for node in self.nodes
, а неfor node in nodes
. Это наблюдение, а не ответ на ваш вопрос.