Python `全局`未定义名称使用类变量时出错
由于某种原因,我得到一个Python `全局`未定义名称使用类变量时出错,python,class,global,Python,Class,Global,由于某种原因,我得到一个全局名称未定义的错误。问题在于addClient方法,在该方法中,我将递增全局变量joinID。它向我抛出一个错误NameError:未定义全局名称“joinID”。我做错了什么 class Chatroom: clients = [] joinID = 0 def __init__(self,name,refNum): self.refNum = refNum self.name = name def
全局名称未定义的错误。问题在于addClient
方法,在该方法中,我将递增全局变量joinID
。它向我抛出一个错误NameError:未定义全局名称“joinID”
。我做错了什么
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)
将变量带到类外
joinID=0
clients=[]
class Chatroom:
def __init__(self,name,refNum):
将变量带到类外
joinID=0
clients=[]
class Chatroom:
def __init__(self,name,refNum):
在类的方法中,最好使用实例属性或类属性。在这种情况下,您使用的是atribute类
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))
在类的方法中,最好使用实例属性或类属性。在这种情况下,您使用的是atribute类
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))
你的压痕看起来破了。另外,您知道“x”和“self.x”之间的区别吗?很简单,joinID没有定义。没有声明joinID变量。缩进看起来已损坏。另外,您知道“x”和“self.x”之间的区别吗?很简单,joinID没有定义。没有声明joinID变量。或者使用self.
前缀通过实例查找变量,或者使用Chatroom.
前缀通过类访问变量。或者使用self.
前缀通过实例查找变量,或者使用Chatroom.
前缀通过类访问变量。