1

Solaris kstat データへのアクセスを提供するための Python 拡張機能を作成しています (出荷されている perl ライブラリ Sun::Solaris::Kstat と同じ精神で)。リストまたは単一のオブジェクトを条件付きで返すことについて質問があります。Python の使用例は次のようになります。

    cpu_stats = cKstats.lookup(module='cpu_stat')
    cpu_stat0 = cKstats.lookup('cpu_stat',0,'cpu_stat0')

現在実装されているように、lookup() は一致するすべての kstat オブジェクトのリストを返します。最初のケースではオブジェクトのリスト (CPU の数だけ) が返され、2 番目の呼び出しでは単一の kstat が完全に指定され、1 つの kstat を含むリストが返されます。

私の質問は、一致するものが 1 つしかない場合に単一のオブジェクトを返し、多数ある場合にリストを返すのは不適切な形式ですか?

思慮深い答えをありがとう!私のpython-fuは弱いですが、あなたのような人々のおかげでより強くなっています.

4

1 に答える 1

7

「私の質問は、一致するものが 1 つしかない場合に単一のオブジェクトを返し、多数ある場合にリストを返すのは不適切な形式ですか?」

一貫性のない型を返すのは不適切な形式です。

一貫したタイプを返します: kstat のリスト。

type(result)ほとんどの Pythonista は、それが kstat であるか、kstats のリストであるかを判断するためにを使用することを好みません。

シンプルで一貫した方法でリストの長さをチェックしたいと思います。

また、長さがシステム情報の一部に依存する場合、おそらく API メソッドがこのメタデータを提供できます。

クエリのようなものを処理する方法に関するアドバイスやアイデアについては、 DB-API PEPを参照してください。

于 2009-06-02T17:13:49.817 に答える