[英]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.