为什么在我的输入有效时删除 'self' 会导致错误?
Why does removing 'self' cause an error when my input is valid?
我有一个关于classes和'self'的比较基础的问题,虽然我研究过后知道它们的用途-但我仍然不太了解一些实际的实现。
我的问题:
我得到 'self' is not defined for the last line of code。这是为什么?
我曾看到在 post-order_traversal_iterative 的函数中我会做 self.root 的情况,但在其他情况下它只是 root。
我知道 class 的目的是让我们可以在同一个 class 中引用变量和其他东西,但在不同的函数中,这就是我们使用 self.root 的地方 - 这是对吗?
考虑 2。我认为我们根本不需要 'self'。但是当我把所有的自我都拿出来时,我的输入 [1,None,2,3]
得到了一个意想不到的参数
class Treenode:
def __init__(self,val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def post_order_traversal_iterative(self,root):
stack = [root]
output = []
if not root:
return []
while stack:
curr = stack.pop()
output.append(curr.val)
if curr.right:
stack.append(curr.left)
if curr.left:
stack.append(curr.right)
return output
x = Solution()
print(x.post_order_traversal_iterative(self,[1, None, 2, 3]))
你没有在 class 之外提到 self
。 Python 在实例方法的后台为您使用它。
你做了一个x
,它允许你像这样调用实例方法x.post_order_traversal_iterative([1, None, 2, 3])
(可以这样想 Solution.post_order_traversal_iterative(x, [1, None, 2, 3]
)
我有一个关于classes和'self'的比较基础的问题,虽然我研究过后知道它们的用途-但我仍然不太了解一些实际的实现。
我的问题:
我得到 'self' is not defined for the last line of code。这是为什么?
我曾看到在 post-order_traversal_iterative 的函数中我会做 self.root 的情况,但在其他情况下它只是 root。 我知道 class 的目的是让我们可以在同一个 class 中引用变量和其他东西,但在不同的函数中,这就是我们使用 self.root 的地方 - 这是对吗?
考虑 2。我认为我们根本不需要 'self'。但是当我把所有的自我都拿出来时,我的输入 [1,None,2,3]
得到了一个意想不到的参数class Treenode: def __init__(self,val=0, left=None, right=None): self.val = val self.left = left self.right = right class Solution: def post_order_traversal_iterative(self,root): stack = [root] output = [] if not root: return [] while stack: curr = stack.pop() output.append(curr.val) if curr.right: stack.append(curr.left) if curr.left: stack.append(curr.right) return output x = Solution() print(x.post_order_traversal_iterative(self,[1, None, 2, 3]))
你没有在 class 之外提到 self
。 Python 在实例方法的后台为您使用它。
你做了一个x
,它允许你像这样调用实例方法x.post_order_traversal_iterative([1, None, 2, 3])
(可以这样想 Solution.post_order_traversal_iterative(x, [1, None, 2, 3]
)