如何解决在python类中返回self只会返回NoneType
我在python中创建了一个链表,并希望构建一个函数来查找最后一个项目,但是当我按照以下方式进行设计时,该函数返回“ None”类型。 “返回自我”一定有问题,因为我在返回之前打印“自我”看起来还不错。
class LinkNode():
def __init__(self,value=0,next=None):
self.val=value
self.next=next
def findlast(self):
if self.next == None:
return self
else:
self.next.findlast()
以下是创建实例
node3=LinkNode(3,None)
node2=LinkNode(2,node3)
chain=LinkNode(1,node2)
x=chain.findlast()
type(x)
NoneType
解决方法
def findlast(self):
if self.next == None:
return self
else:
self.next.findlast()
最后一行是一个问题,因为它不会从函数中返回任何内容,这就是为什么得到None
的原因。您应该使用(也不要使用多余的else
,并且将is
与None
一起使用):
def findlast(self):
if self.next is None:
return self
return self.next.findlast()
但是,请记住,这不是理想递归用例,它最好写为:
def findlast(obj):
if obj is not None: # only needed if you may pass in None as self.
while obj.next is not None:
obj = obj.next
return obj
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。