Python 全局变量和类功能

标签 python class

我正在创建一个简单的 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)的运作方式。数据应该存储在类实例中,而不是全局。

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

关于Python 全局变量和类功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16210314/

相关文章:

python - 非阻塞文件读取

python - 覆盖导入中已安装的模块

python - 使用 .replace() 交换值的 Pandas 怪异行为

java - List 类如何工作的说明

CSS:如何以任意顺序选择具有所有 4 个类的元素

php - 如何从另一个非命名空间类访问不同命名空间中的类

python - 如何按年份扩展/添加行?

python - 你如何在 pytest session 结束时清理资源?

Python - 如何实现与 NumPy 函数兼容的自定义类?

java - 接口(interface)对象和类对象的区别