如何在Python中正确定义类中的函数?

时间:2017-09-11 19:24:37

标签: python

我想以递归方式定义函数 sumOfLeftLeaves

class Node(object):
  def __init__(self,x):
  self.val = x
  self.left = None
  self.right = None

class Solution(object):
  def sumOfLeftLeaves(self,root):
    if root.val == None:
      return 0
    elif (root.left.left == None and root.left.right == None):
      return root.left.val + sumOfLeftLeaves(root.right)
    else:
      return sumOfLeftLeaves(root.left)+sumOfLeftLeaves(root.right)

但它给出了一个错误“NameError:全局名称'sumOfLeftLeaves'未定义”,但我认为它是递归定义的,有什么不对?

1 个答案:

答案 0 :(得分:2)

sumOfLeftLeaves仍然是类上的方法,而不是全局定义的函数。您可以在self上以绑定方式访问它,就像您访问任何其他方法一样:

self.sumOfLeftLeaves(...)

在测试is None对象时,您应该真正使用None

class Solution(object):
    def sumOfLeftLeaves(self, root):
        if root.val is None:
            return 0
        elif (root.left.left is None and root.left.right is None):
            return root.left.val + self.sumOfLeftLeaves(root.right)
        else:
            return (self.sumOfLeftLeaves(root.left) + 
                    self.sumOfLeftLeaves(root.right))