python - 派生类无法识别父类方法的参数

标签 python python-2.7 oop inheritance

我正在尝试制作一组​​函数,以便通过一些数据轻松操作。 我面临的问题是:它似乎可以识别并使用父类中的方法,除了一个:show(),给我关于意外参数的错误。

以下是类的示例:

from treelib import Tree, Node

class Join(Tree):

    def __init__(self, id, desc, childs=(), *args, **kwargs):

        Tree.__init__(self, *args, **kwargs)

        self.id = id
        self.desc = desc
        self.value = None
        self.parent = None
        self.childs = None

        self.create_node(tag=desc, identifier=id)

        for i in childs:
            self.paste(self.id, i)

    def getSons(self):
        sons = self.children(self.id)
        return sons

    def getID(self):
        return self.id

    def getDesc(self):
        return self.desc

    def show(self):
        self.show(key=lambda x: x.tag, reverse=True, line_type='ascii-em')

class Get(Tree):

    def __init__(self, id, desc, primitive, *args, **kwargs):

        Tree.__init__(self, *args, **kwargs)

        self.id = id
        self.desc = desc
        self.parent = None
        self.primitive = primitive

        self.create_node(tag=desc, identifier=id, data=primitive)

    def getID(self):
        return self.id

    def getDesc(self):
        return self.desc

    def show(self):
        self.show(key=lambda x: x.tag, reverse=True, line_type='ascii-em')

class Primitive():

    def __init__(self, value):
        self.value = value

    def getValue(self):
        return self.value

    def show(self):
        pass
        #print '\t -> ' + str(self.value)

例如,如果我在另一个 .py 上执行此操作

prim = Primitive(0)
get1 = Get("get1", "Some random thing", prim)
get1.show()

它告诉我 key 是一个意外的参数。我什至检查了库的 .py 文件,参数就在那里:

def show(self, nid=None, level=ROOT, idhidden=True, filter=None,
         key=None, reverse=False, line_type='ascii-ex'):

create_node() 方法工作得很好!这就是奇怪的地方。有什么建议吗?

我在Python 2.7中使用treelib

最佳答案

您的方法 show() 调用自身:

def show(self):
    self.show(key=lambda x: x.tag, reverse=True, line_type='ascii-em')

Get中将其删除,并在Join中将其更改为:

def show(self):
    super(Join, self).show(key=lambda x: x.tag, reverse=True, line_type='ascii-em')

关于python - 派生类无法识别父类方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500230/

相关文章:

python - 如何用 beautiful soup 从此页面提取轨道标题

python - Pyspark:dataframe describe() 和 summary() 是如何实现的

python - 将长字符串解析为日期时间

python - 使用python中的beautifulsoup从具有更多文本内容的网页中提取数据

python - 在 Pandas 中,根据同一 DataFrame 中的值对匹配多个条件的行进行计数,并将计数添加到列中

Python:多级嵌套列表

java - 为什么 "this"关键字也引用子类?

JavaScript 成员函数声明

具有先前值的 Python Pandas iterrows()

python - 如何设置 np.array 的值变为零的概率?