3

Neo4jグラフデータベースを使用していますが、現在のRESTライブラリの1つを適応させたいと考えています。20ノードのデータベースの場合を想像してみてください。

>>> db = Database("http://localhost:7474")

APIをできるだけシンプルにして、次のような14番目のノードを取得できるようにします。

>>> db[14]

Neo4jでは、すべてのノードに数字キーがあります。これは、db[14]に非常にうまくマップされることを意味します。http://localhost:7474/db/data/node/14ただし、データベースからdbオブジェクトにすべてのノードをロードする必要はありません。私の好ましい動作は、ノード14を検索し、値がデータベースに存在しない場合はIndexErrorを発生させることです。つまり、dbオブジェクトを空にしたいが、値を持っているふりをしたい。

のように見えるlistが、動作が大幅に異なるものを作成することは可能ですか?

4

1 に答える 1

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

詳細については、特別なメソッド名を参照してください。

于 2011-01-15T08:57:59.967 に答える