from datetime import datetime
class sms_store:
def __init__(self):
self.store = [] #Keeps resetting / not saving data from previous instances
self.message_count = 0 #Keeps resetting / not saving data from previous instances
def add_new_arrival(self,number,time,text):
self.store.append(("From: "+number, "Recieved: "+time,"Msg: "+text))
self.message_count += 1
newsms = sms_store()
time = datetime.now().strftime('%H:%M:%S')
newsms.add_new_arrival("23456",time, "hello, how are you?")
如上面评论部分所示,我想要一个列表来存储来自VARIOUS实例的信息。不是一个实例,而是SEVERAL单独的信息实例,列表是可访问的列表,我可以在其中编辑它,它可以保存来自不同实例的信息。它没有这样做。它在每个实例后重置。
我尝试了全局变量路线,但没有理解它,也不认为它会起作用。我在类中设置了一个全局变量OUTSIDE,并在类中创建了一个对象以存储在列表中,但它给出了一个错误: UnboundLocalError:在赋值之前引用的局部变量'message_count'。
我正在开发一个需要在交互式python网站中使用类的练习:http://openbookproject.net/thinkcs/python/english3e/classes_and_objects_I.html#term-class
请帮助我。
答案 0 :(得分:1)
每次都不应该创建一个新的sms_store实例:
newsms = sms_store()
newsms.add_new_arrival("23456", datetime.now().strftime('%H:%M:%S'), "hello, how are you?")
newsms.add_new_arrival("65432", datetime.now().strftime('%H:%M:%S'), "I'm fine, thanks")
工作得很好
答案 1 :(得分:0)
看起来你想要一个类变量。
代码应如下所示:
from datetime import datetime
class Sms_store:
store = []
message_count = 0
def __init__(self):
pass
def add_new_arrival(self,number,time,text):
Sms_store.store.append(("From: "+number, "Recieved: "+time,"Msg: "+text))
Sms_store.message_count += 1
newsms1 = Sms_store()
time = datetime.now().strftime('%H:%M:%S')
newsms1.add_new_arrival("23456",time, "hello, how are you?")
newsms2 = Sms_store()
time = datetime.now().strftime('%H:%M:%S')
newsms2.add_new_arrival("23456",time, "hello, how are you?")
print Sms_store.store
这样,变量store
和message_count
将由Sms_store
类的所有实例共享。