使用 class 变量时“全局”名称未定义错误
`global` name not defined error when using class variables
出于某种原因,我在这里遇到 global name is not defined
错误。问题出在 addClient
方法中,我在其中递增我的全局变量 joinID
。它抛出一个错误 NameError: global name 'joinID' is not defined
。我做错了什么?
class Chatroom:
clients = []
joinID = 0
def __init__(self,name,refNum):
self.refNum = refNum
self.name = name
def addClient(self,clientName):
global clients
global joinID
joinID = joinID+1
clients.append(clientName, joinID)
def removeClient(self, clientName, joinID):
global clients
clients.remove(clientName, joinID)
取class
外的变量
joinID=0
clients=[]
class Chatroom:
def __init__(self,name,refNum):
在来自 class 的方法中最好使用实例属性或 class 属性。在这种情况下,您使用的是 class 属性。
class Chatroom:
clients=[]
joinID=0
def __init__(self,name,refNum):
self.refNum=refNum
self.name=name
def addClient(self,clientName):
self.joinID=self.joinID+1
self.clients.append((clientName,self.joinID))
def removeClient(self,clientName,joinID):
self.clients.remove((clientName,joinID))
如果不想使用全局变量,则必须在全局范围内声明变量:
joinId=0
clients=[]
class Chatroom:
def __init__(self,name,refNum):
self.refNum=refNum
self.name=name
def addClient(self,clientName):
global joinID
global clients
joinID=joinID+1
clients.append((clientName,joinID))
def removeClient(self,clientName,joinID):
global clients
clients.remove((clientName,joinID))
出于某种原因,我在这里遇到 global name is not defined
错误。问题出在 addClient
方法中,我在其中递增我的全局变量 joinID
。它抛出一个错误 NameError: global name 'joinID' is not defined
。我做错了什么?
class Chatroom:
clients = []
joinID = 0
def __init__(self,name,refNum):
self.refNum = refNum
self.name = name
def addClient(self,clientName):
global clients
global joinID
joinID = joinID+1
clients.append(clientName, joinID)
def removeClient(self, clientName, joinID):
global clients
clients.remove(clientName, joinID)
取class
外的变量joinID=0
clients=[]
class Chatroom:
def __init__(self,name,refNum):
在来自 class 的方法中最好使用实例属性或 class 属性。在这种情况下,您使用的是 class 属性。
class Chatroom:
clients=[]
joinID=0
def __init__(self,name,refNum):
self.refNum=refNum
self.name=name
def addClient(self,clientName):
self.joinID=self.joinID+1
self.clients.append((clientName,self.joinID))
def removeClient(self,clientName,joinID):
self.clients.remove((clientName,joinID))
如果不想使用全局变量,则必须在全局范围内声明变量:
joinId=0
clients=[]
class Chatroom:
def __init__(self,name,refNum):
self.refNum=refNum
self.name=name
def addClient(self,clientName):
global joinID
global clients
joinID=joinID+1
clients.append((clientName,joinID))
def removeClient(self,clientName,joinID):
global clients
clients.remove((clientName,joinID))