0

我正在做一个非常简单的 API来测试为 python 生成一个 SPORE 客户端。

在 WSGI 中,将数据保存在服务器中的最佳方式是什么?

我尝试以这种方式制作 RedisDict:

import json
from redis import Redis
redis = Redis()

class RedisDict:
    """A redis based dict."""

    def dict(self):
        TODOS = redis.get('TODOS')
        return json.loads(TODOS)

    def keys(self):
        return self.dict().keys()

    def __getitem__(self, key):
        return self.dict()[key]

    def __setitem__(self, key, value):
        obj = self.dict()
        obj[key] = value
        redis.set('TODOS', json.dumps(obj))

    def __delitem__(self, key):
        obj = self.dict()
        del obj[key]
        redis.set('TODOS', json.dumps(obj))

todos = RedisDict()

我怎样才能dict(todos)返回一个字典?这在 WSGI 环境中就足够了吗?

4

2 回答 2

1

假设该方法dict返回一个字典,为什么不这样做:

dict_i_wanted = todos.dict()

如果您必须支持,请dict_i_wanted = dict(todos)添加此方法:

def __iter__(self):
    return self.dict().iteritems()
于 2012-10-22T18:14:41.277 回答
0

如果要制作自己的“ dict-like”类,则需要实现字典协议。最简单的方法是继承collections.Mapping并实现表中提到的抽象方法。dict您需要实现那些与相应方法相同的行为;例如__iter__,应该返回所有元组的可迭代对象(key, value)。(这是你需要做的一种方法dict(todos)。没有什么神奇的方法可以强迫dict你尝试用你的dict()方法做的事情。)

于 2012-10-22T18:12:48.597 回答