如何使用额外的方法在Sage中创建一个新的Graph类?

时间:2011-03-11 22:07:40

标签: class inheritance python sage

我正在Sage中编写一些代码,用Feynman图进行一些计算,这些图只是带有边标签的有限,无定向多图。我需要实现边缘收缩等方法,这些方法在类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 个答案:

答案 0 :(得分:3)

你可能根本就没有正确地继承东西。尝试在__init__()

的开头插入此内容
super().__init__()