pydot实现不可扩展。打断继承人

2024-03-29 14:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python继承方面遇到了问题。你知道吗

这个例子只概述了层次结构,对于一个更复杂的代码,我不能在这里发布,所以请耐心等待,我会给你所有需要的细节。你知道吗

我定义了两个类:

class A(pydot.Node):
    def __init__(self):        
        # do some init
        pydot.Node.__init__(self)

    def very_useful_method(self):
        return self._valuable_property

class B(A):
    def __init__(self):
        # do some initialization
        A.__init__(self)


if "__main__" == __name__
    # some code that uses add_node and get_nodes
    retrieved_b_instance.very_useful_method() #error, **Node** object has no attribute very_useful_method...

我确信我没有正确地执行继承过程,而且我在__init__调用中做了一些错误的事情。你知道吗

我使用的是python2.7。你知道吗

有什么建议吗?你知道吗

跟踪:

Traceback (most recent call last):
  File "/home/reuts/PycharmProjects/AI4/Ex4_pydot.py", line 399, in <module>
    driver.interact()
  File "/home/reuts/PycharmProjects/AI4/Ex4_pydot.py", line 362, in interact
    self.parse_command(cmd)
  File "/home/reuts/PycharmProjects/AI4/Ex4_pydot.py", line 354, in parse_command
    options[args[0]]()
  File "/home/reuts/PycharmProjects/AI4/Ex4_pydot.py", line 344, in print_report
    print "node cpt: %s" % node.get_cpt()
AttributeError: 'Node' object has no attribute 'get_cpt'

Node是pydot实现的基类(pydot.节点)除此之外,我在继承时还使用了两个类pydot.节点. 你知道吗

我现在已经检查了中的代码pydot.py公司我怀疑那里有一个转变。来自Java和静态类型的背景,我对get\u node\u list()中的操作及其对返回实例类型的影响理解缓慢。你知道吗


Tags: inpyselfnodehomegetinitline
1条回答
网友
1楼 · 发布于 2024-03-29 14:14:43

我可能发现了错误。显然pydot.Node有一个方法没有返回我期望的结果(pydot是一个图形实现)。你知道吗

实际的节点存储为字符串,get_nodes()方法为每个get_nodes调用重新生成它们,这会导致pydot.Node类的任何扩展如果稍后通过get_nodes使用,实际上毫无意义。你知道吗

更新:解决方法

我发现在与实现交互时保存数据的方法是使用Node实例的obj_dict属性,该属性通过图的obj_dict['nodes']obj_dict元素还原(为所有添加的节点保存…)

相关问题 更多 >