繁体   English   中英

如何在python类中使用全局变量?

[英]How can I use global variable in python class?

Java代码运行,而python代码没有,为什么? 如何在Python中访问类内的全局变量?

Python代码:

Definition for a binary tree node.
   class TreeNode(object):
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None

previous = None
class Solution(object):
    def isValidBST(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
        if not root:
            return True
        if not self.isValidBST(root.left):
            return False
        if previous!=None and previous >= root.val:
            return False
        previous = root.val
        return self.isValidBST(root.right)

第20行:UnboundLocalError:赋值前引用的局部变量“previous”。

Java代码:

 public class Solution {
        private Integer previous = null;
        public boolean isValidBST(TreeNode root) {
            if(root == null){
                return true;
            }
            if(!isValidBST(root.left)){
                return false;
            }
            if(previous != null && previous>=root.val){
                return false;
            }
            previous = root.val;
            return isValidBST(root.right);
        }
    }  

试试这个:

    class Solution(object):
        previous = None
        def isValidBST(self, root):
            """
            :type root: TreeNode
            :rtype: bool
            """
            if not root:
                return True
            if not self.isValidBST(root.left):
                return False
            if self.previous!=None and self.previous >= root.val:
                return False
            self.previous = root.val
            return self.isValidBST(root.right)  

注意previous内容现在在类中,并使用self.previous来访问它

编辑:要将其传递到外部,您需要传递解决方案对象

solution = Solution()
#perform something to assign a previous node

test = Test()

test.getPrev(solution)

class Test(object):
    def getPrev(self, solution):
        print solution.previous

您应该只使用全局关键字。 由于previous = None在类Solution之外定义,因此要在类中使用相同的变量,请添加一行。

global previous
if previous!=None and previous >= root.val:
    your logic

这将做你的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM