我在用Python编写递归成员函数时遇到了一个问题。我无法将函数参数的默认值初始化为与成员变量相同的值。我猜Python不支持这种功能,因为它说self在我试图分配参数时没有定义。虽然我可以围绕它编写代码,但是Python中缺少函数重载的情况会使我尝试的一个明显的解决方案落空。在
例如,尝试递归地打印一个链表,我得到了以下显示函数的代码def display(self,head = -1):
if head == -1:
head = self.head
if not head:
return
print head,
self.display(head.link)
虽然这段代码有效,但它很难看。
主要功能如下:
^{pr2}$
如果我能把显示功能参数设为默认值自身.头部如果不带参数调用它,那么它看起来会更好。我最初尝试创建这个函数的两个版本,一个接受两个参数,一个接受一个参数,但正如我所说,Python不支持重载。我可以传递一个参数列表并检查参数的数量,但这也很难看(这会使它看起来像Perl!)。问题是,如果我放线
水头=自身.头部
在函数体内部,它将在每次递归调用期间被调用,这绝对不是我需要的行为。None也是head变量的有效值,因此我无法将其作为默认值传入。我使用-1来基本上知道我在初始函数调用中,而不是递归调用中。我意识到我可以编写两个函数,一个驱动另一个,但我宁愿把它们都包含在一个递归函数中。我很确定我遗漏了一些基本的Python原理,有人能帮我解决这个问题吗?在
谢谢!在