Python全局变量和类功能
问题内容:
我创建了一个简单的python程序,该程序提供了SMS_Inbox的基本功能。我创建了一个SMS_Inbox方法。
store = []
message_count = 0
class sms_store:
def add_new_arrival(self,number,time,text):
store.append(("From: "+number, "Recieved: "+time,"Msg: "+text))
**message_count += 1**
def delete(self,i):
if i > len(store-1):
print("Index does not exist")
else:
del store[i]
message_count -= 1
在粗体字中,我得到一个错误:
UnboundLocalError: local variable 'message_count' referenced before assignment.
我创建了一个全局变量存储区,该存储区是一个空列表,并且在使用add_new_variable对象时可以使用。但是由于某种原因,它没有将值添加到我的全局message_count变量中。
请帮忙
问题答案:
这不是类的工作方式。数据应存储在类实例内,而不是全局。
class SMSStore(object):
def __init__(self):
self.store = []
self.message_count = 0
def add_new_arrival(self,number,time,text):
self.store.append(("From: "+number, "Recieved: "+time,"Msg: "+text))
self.message_count += 1
def delete(self, i):
if i >= len(store):
raise IndexError
else:
del self.store[i]
self.message_count -= 1
sms_store = SMSStore()
sms_store.add_new_arrival("1234", "now", "lorem ipsum")
try:
sms_store.delete(20)
except IndexError:
print("Index does not exist")
print sms_store.store
# multiple separate stores
sms_store2 = SMSStore()
sms_store2.add_new_arrival("4321", "then", "lorem ipsum")
print sms_store2.store