0

RESTを介してリモートで管理されるオブジェクトへのAPIとしてPythonクラスを作成しています。

REST APIには、リモートオブジェクトのプロパティを定義するディクショナリのリストを返す呼び出しが含まれています。これらのプロパティを対応するPythonオブジェクトの属性として動的に追加するコードを作成中です(つまり、クラスがインスタンス化されると、プロパティのリストに対してRESTクエリが作成され、各プロパティが属性として追加されます。インスタンス。)

しかし、これにより、オブジェクトに動的に追加された属性を一瞥して「辞書について聞いたことがありますか?」と思ったPHPコードの記憶がよみがえりました。

私の経歴がC/C ++ / Javaに根ざしていることを考えると、これは私にとってはやや異質な考えですが、おそらくPython(およびPHP)のコースと同等です。では、辞書を使用するのではなく、オブジェクトに属性を動的に追加するのが適切なのはいつですか。

私が関連資料で読んだことから、APIは正当なケースであるように私には思えます。

4

2 に答える 2

2

免責事項:私はRESTについて何も知りません...

そうは言っても、次の理由から、私は通常、オブジェクトに属性を追加することを少し躊躇します。

  • 名前空間の衝突により、置き換えたくないデータを誤って置き換える可能性があります
  • obj.__dict__辞書は、調べたりvars(obj)、類似したものを使用するよりも簡単に調べることができます。

ただし、標準ライブラリに属性を追加することには優先順位があります...これは、基本的にargparse、返されたを設定するために行うことnamespaceです。「ユーザーは、オブジェクトに追加される属性を知っているだろうか」という質問をする価値があると思います。この質問に対する答えがyesであり、前述の名前空間の競合について心配していない場合は、単純なオブジェクトが適切である可能性があります。それ以外の場合は、辞書を使用します。

于 2013-01-22T19:45:37.893 に答える
0

そのような例では__getitem__、辞書のメソッド( 、、、、、、、、およびその他の適用可能なもの)をオーバーロードする傾向があります。__setitem____delitem__keysvaluesitems

Pythonでデータを表すクラスを正式に定義している場合、記述子を使用することは読みやすさにとって悪いオプションではありません。

于 2013-01-22T19:54:42.547 に答える