Python2.7 继承networkx.DiGraph报错

Networkx是什么不再赘述

现希望继承Networkx,以实现功能扩展。Windows7 Python2.7 32bit

实现过程中出现问题

问题1

class CFG(nx):  
    def __init__(self, arg1=None, arg2=None, arg3=False ):

        super(nx, self).__init__()

报错:

TypeError:Error when calling the metaclass bases module.__init__() takes at most 2 arguments(3 given)

解决:

Type(nx) -> module

而要继承的是类,所以需要改为

class CFG(nx.DiGraph):  
    def __init__(self, arg1=None, arg2=None, arg3=False ):

        super(nx.DiGraph, self).__init__()


问题2

x = nx.DiGraph()

y = CFG()

len(dir(x)) -> 87

len(dir(y)) -> 85

竟然少了两个成员:succ和pred

以至于当y.add_edge(1,2)时报错:CFG中没有succ成员

解决:

哪里出错了?仔细检查代码,发现,犯了一个非常低级的错误

super(nx.DiGraph, self).__init__()

这句话实际上调用的是nx.DiGraph的父类的“构造函数”,即Graph的构造函数

自然DiGraph在Graph的基础上扩展的成员和方法都不在CFG中。

可能是早上起早了,脑子不太清楚

改正:

class CFG(nx.DiGraph):  
    def __init__(self, arg1=None, arg2=None, arg3=False ):

        super(CFG, self).__init__()


OK,so much





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值