我会在函数内的两个def之间传递一个变量。我能怎么做?我尝试使用全球但没有工作
class example:
def funz1(self,q,b):
global queue
queue = []
queue += [q]
queue += [a]
def funz2(self):
return str(queue.pop())
但它告诉我队列是一个空列表
答案 0 :(得分:4)
您必须使用self
参数,该参数指向example
实例本身:
class example:
def funz1(self,q,b):
self.queue = []
self.queue += [q]
self.queue += [a]
def funz2(self):
return str(self.queue.pop())
了解更多here。
另外,作为附注,array += [item]
错误,您应该使用array.append(item)
答案 1 :(得分:1)
有几个代码发布,首先,没有必要使用全局栏,因为你可以访问自己。此外,如果列表不为空,pop将引发异常,因此,您可以拥有以下内容:
class example:
def __init__(self):
self.queue = []
def funz1(self,q,b):
self.queue.append(q)
self.queue.append(b)
def funz2(self):
if len(self.queue) > 0:
return str(self.queue.pop())
最重要的是,如果你使用列表作为q,你也可以使用专为此用途设计的集合中的deque:
from collections import deque
class example:
def __init__(self):
self.queue = deque()
def funz1(self,q,b):
self.queue.append(q)
self.queue.append(b)
def funz2(self):
if len(self.queue) > 0:
return str(self.queue.popleft())