Return self in python class just returns NoneType

Return self in python class just returns NoneType

我在 python 中创建了一个链表并想构建一个函数来查找最后一项,但是当我如下设计时,函数 returns "None"类型。 “return self”肯定有问题,因为我在 return 之前打印了“self”,它看起来不错。

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)

None类型

def findlast(self):
    if self.next == None:
        return self
    else:
        self.next.findlast()

最后一行是个问题,因为它没有 return 任何东西 来自函数,这就是你得到 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