如何实例化和扩展 Python igraph Vertex class
How to instantiate and extend Python igraph Vertex class
我想用模拟研究所需的一些额外变量方法扩展 igraph Vertex class。但是,当我尝试导入和扩展顶点 class 时,出现错误。
from igraph import Vertex
v = Vertex()
TypeError: cannot create 'igraph.Vertex' instances
同样,当我尝试扩展 class.
时也会出现同样的错误
from igraph import Vertex
class MyVertex(Vertex):
def __init__(self):
super().__init__()
my_vertex = MyVertex()
TypeError: cannot create 'MyVertex' instances
如何实例化 igraph 顶点并扩展 igraph 顶点 class?
Vertex
个实例并不意味着被实例化;这是故意的。 Vertex
只是对图形引用和顶点索引的包装,它提供了一些方便的方法,这些方法通常只是关联图形实例上相同方法的代理。即使您创建了自己的 Vertex
subclass,目前也没有办法告诉 igraph Graph
对象开始返回您的 Vertex
subclass 表达式喜欢 graph.vs[x]
而不是 Vertex
本身。
如果你想创建自己的 vertex-like classes,你可以尝试组合而不是继承,即你创建一个 MyVertex
class 需要 Vertex
作为其构造函数参数,存储顶点,然后将方法调用转发给它,具体取决于您需要在自己的 MyVertex
实例中支持的内容:
class MyVertex:
def __init__(self, v):
self._v = v
def degree(self, *args, **kwds):
return self._v.degree(*args, **kwds)
...
请注意,由于 Vertex
实例只是图形和顶点 ID 的包装器,如果您从图形中删除顶点,事情会变得混乱,因为剩余的顶点由底层 C re-indexed库以确保它们的 ID 始终在 [0; n-1] 代表 n 个顶点。
我想用模拟研究所需的一些额外变量方法扩展 igraph Vertex class。但是,当我尝试导入和扩展顶点 class 时,出现错误。
from igraph import Vertex
v = Vertex()
TypeError: cannot create 'igraph.Vertex' instances
同样,当我尝试扩展 class.
时也会出现同样的错误from igraph import Vertex
class MyVertex(Vertex):
def __init__(self):
super().__init__()
my_vertex = MyVertex()
TypeError: cannot create 'MyVertex' instances
如何实例化 igraph 顶点并扩展 igraph 顶点 class?
Vertex
个实例并不意味着被实例化;这是故意的。 Vertex
只是对图形引用和顶点索引的包装,它提供了一些方便的方法,这些方法通常只是关联图形实例上相同方法的代理。即使您创建了自己的 Vertex
subclass,目前也没有办法告诉 igraph Graph
对象开始返回您的 Vertex
subclass 表达式喜欢 graph.vs[x]
而不是 Vertex
本身。
如果你想创建自己的 vertex-like classes,你可以尝试组合而不是继承,即你创建一个 MyVertex
class 需要 Vertex
作为其构造函数参数,存储顶点,然后将方法调用转发给它,具体取决于您需要在自己的 MyVertex
实例中支持的内容:
class MyVertex:
def __init__(self, v):
self._v = v
def degree(self, *args, **kwds):
return self._v.degree(*args, **kwds)
...
请注意,由于 Vertex
实例只是图形和顶点 ID 的包装器,如果您从图形中删除顶点,事情会变得混乱,因为剩余的顶点由底层 C re-indexed库以确保它们的 ID 始终在 [0; n-1] 代表 n 个顶点。