在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,并且将isNone一起使用):

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...