0

Pythonで新しいスタイルのクラスを定義するとき__dict__、物事の辞書を含む-Attributeを使用して、定義された属性(名前と値)を取得できます。

何十万ものインスタンスを作成し、メモリを節約したいので、クラスとそのサブクラスでスロットを使用したいと思います。ただし、使用するクラスには__slots__-Attribute__dict__がないため、その方法で値に反射的にアクセスすることはできません。

そのようなクラスに定義された属性の順序を保持する別の方法、好ましい方法はありますか?

どんな助けでも大歓迎です!

4

1 に答える 1

5

dir()組み込み関数を使用して、いずれ__dict____slots__に直接アクセスする代わりに、オブジェクトのメンバーを一覧表示する必要があります。

インスタンス__dict__は、インスタンスに直接設定された属性のみdir()を一覧表示しますが、クラスとそのクラスのベースの属性(メソッドを含む)も一覧表示します。また、スロットとして定義されているものもすべて一覧表示されます。

inspectこのモジュールを使用して、 dir();の出力をフィルタリングできます。たとえば、メソッドに興味がない場合は、inspect.ismethod()が役立ちます。

于 2013-01-31T17:16:02.450 に答える