我正在使用Neo4j图形数据库,并希望适应当前的REST库之一.想象一下具有20个节点的数据库的情况.
>>> db = Database("http://localhost:7474")
Run Code Online (Sandbox Code Playgroud)
我希望API尽可能简单,这样就可以得到类似于此的第14个节点:
>>> db[14]
Run Code Online (Sandbox Code Playgroud)
在Neo4j中,每个节点都有一个数字键.这意味着db[14]映射非常好http://localhost:7474/db/data/node/14但是,我不想将数据库中的每个节点加载到db对象中.我首选的行为是查找节点14,如果数据库中不存在该值,则引发IndexError.也就是说,我希望db对象为空,但假装有一个值.
是否有可能制作看起来像a的东西list,但表现却截然不同?
Mar*_*ers 10
是的,您可以编写一个实现__getitem__并动态生成结果的自定义类.
>>> class MyDatabase(object):
... def __getitem__(self, x):
... if 10 <= x <= 15:
... return "foo"
... else:
... raise IndexError('key not in database')
...
>>> db = MyDatabase()
>>> db[12]
foo
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅特殊方法名称