gpt4 book ai didi

python - 没有self作为第一个参数的python方法

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:39 25 4
gpt4 key购买 nike

我看到这个问题已经被问过多次,并且会被标记为重复。然而,我看不到合适的答案。

我理解在使用 OOPS 概念时,对象的实例作为第一个参数发送。然而,在解决一些算法时,我看到一些没有定义 self 的方法,这让我很困惑。

有人可以解释一下这里发生了什么,而不是为什么要使用 self 吗?

class Solution:
def __init__(self):
self.ans=0

def countUnivalSubtrees(self, root: TreeNode) -> int:
if not root:
return 0


def chk(node):
if node is None:
return -1
if node.left is None and node.right is None:
self.ans+=1
return True
l=chk(node.left)
r=chk(node.right)
if node.left and node.right:
if node.left.val==node.right.val and l and r and node.val==node.left.val:
self.ans+=1
return True
if l==-1 and r and node.val==node.right.val:
self.ans+=1
return True
if r==-1 and l and node.val==node.left.val:
self.ans+=1
return True
return False

self.ans=0
chk(root)
return self.ans

我这里指的方法是chk(node)

最佳答案

chk 只是方法内部的函数:你可以像这样重写你的类:

class Solution:
def __init__(self):
self.ans=0

def countUnivalSubtrees(self, root: TreeNode) -> int:
if not root:
return 0
self.ans = 0
self.chk(root)
return self.ans

def chk(self, node):
if node is None:
return -1
if node.left is None and node.right is None:
self.ans += 1
return True
l = self.chk(node.left)
r = self.chk(node.right)
if node.left and node.right:
if node.left.val == node.right.val and l and r and node.val == node.left.val:
self.ans += 1
return True
if l == -1 and r and node.val == node.right.val:
self.ans += 1
return True
if r == -1 and l and node.val == node.left.val:
self.ans += 1
return True
return False

关于python - 没有self作为第一个参数的python方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58744996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com