繁体   English   中英

在 python class 中返回 self 只返回 NoneType

[英]Return self in python class just returns NoneType

我在 python 中创建了一个链表,并想构建一个 function 来找到最后一项,但是当我设计如下时,function 返回“无”类型。 “返回自我”一定有问题,因为我在返回之前打印“自我”看起来很好。

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)

无类型

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

最后一行是一个问题,因为它没有从 function 中返回任何内容,这就是你得到None的原因。 您应该使用(也没有多余的else ,并且使用is with 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM