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