只能算刚入门的刷题选手,今日加深了一下self的用法
`class Solution:
def inorderTraversal(self,root:TreeNode):
def change(root:TreeNode,result:list):
if not root:
return None
change(root.left,result)
result.append(root.val)
change(root.right,result)
result=[]
change(root,result)
return result`
像这种情况不需要在inorderTraversal函数中中对change函数使用self,因为是在自己函数内定义的change函数 `
class Solution:
def inorderTraversal(self,root:TreeNode):
def change(root:TreeNode,result:list):
if not root:
return None
change(root.left,result)
result.append(root.val)
change(root.right,result)
if not root:
return []
result=[]
self.change(root,result)
return result`
而像这样的函数会报一个下述图片的错误
而若将代码改成下面这样就正常了,self相当于c++里的this指针吧,指向这个类里的函数
class Solution:
def inorderTraversal(self,root:TreeNode):
result=[]
self.change(root,result)
return result
def change(self,root:TreeNode,result:list):
if not root:
return None
self.change(root.left,result)
result.append(root.val)
self.change(root.right,result)
另外,我发现一些函数中若用self会降低速度,如果是算法类的代码,尽量在函数中定义函数直接进行调用