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
,并使用 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
我在 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
,并使用 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