Как создать новый класс Graph в Sage с дополнительными методами? - PullRequest
1 голос
/ 12 марта 2011

Я пишу некоторый код в Sage, чтобы выполнить некоторые вычисления с графами Фейнмана, которые являются просто конечными, неориентированными мультиграфами с метками ребер. Мне нужно реализовать такие методы, как сокращение ребер, которые, как ни странно, отсутствуют в классе sage.graphs.graph.Graph. Но я также хочу унаследовать все существующие методы графа, такие как, например, is_tree.

Вот вершина модуля Feynman.sage, которую должен присоединить новый класс.

from sage.graphs.graph import Graph

class FeynmanGraph(Graph):
    """An unoriented multi-graph with labeled edges"""
    def __init__(self, E=[]):
        self._edges = len(E)

    def __repr__(self):
        return 'A Feynman graph with ' + str(self._edges) + ' edges.'

Я не правильно что-то делаю. Хотя создание экземпляра класса дает правильный каталог методов, многие из них не работают, потому что

'FeynmanGraph' object has no attribute '_backend'

Я думаю, это как-то связано с тем, что Sage - это просто Pythonic-оболочка для какого-то другого пакета теории графов.

Пожалуйста, сообщите.

1 Ответ

3 голосов
/ 25 марта 2011

Возможно, вы просто не правильно наследуете вещи. Попробуйте вставить это в начале __init__():

super().__init__()
...