vars
でPythonオブジェクトの属性を表示する方法はありますか?出力フォーマットはクリーンであり、各属性のすべての値を表示していませんか? (たとえば、大規模な配列がすべての画面を占めている)。基本的には、その属性のクリーンなリストがほしいだけです。あなたは、オブジェクトのvars
のキーのリストが必要な場合vars()の出力をきちんと解析するには?
答えて
、それは
list(vars(whatever))
だろうか、あなたは自分のライン上にキーを通過し、印刷することができます:
for attr in vars(whatever):
print(attr)
あなたはpprint
(IPythonのデフォルトのきれいな印刷よりも美しくないかもしれませんが)でその辞書をきれいに印刷することができます:
import pprint
pprint.pprint(vars(whatever))
か、あなたが考えている情報をコード化して、情報を見るための読みやすい方法となるでしょう。vars
があなたに与えます。あなたはいつも自由に独自のコードを書くことができます。
また、dir(whatever)
もあります。これは、インタラクティブな検査に役立つオブジェクトの属性のリストを提供することを目的としています。 dir(whatever)
は、通常、list(vars(whatever))
とは異なります。たとえば、メソッドが含まれます。
属性名のリスト、vars
keys
が必要ですか?または、完全な辞書keys
とvalues
?オブジェクトクラスによっては、空でも、少数のスカラーや文字列、リストや配列などの大規模で複雑なセットでもかまいません。汎用的な「pretty-printer」がなければ、すべてのクラスに対して明確な表示を生成することはできません。オブジェクト属性の有用な表示を生成するのは、__str__
と__repr__
メソッドの目的です。私の現在のipython
セッションで
変数は次のとおりです。
In [97]: who
M argparse arr b choices forbool np nr parser
product sparse sys
一つは、空のVARS
In [99]: forbool
Out[99]: <function __main__.forbool>
In [100]: vars(forbool)
Out[100]: {}
一つとユーザー定義関数は、適度な数で、スパース行列であります属性。この例では5つの非ゼロ値しかないので、配列はかなり小さいです。はい、数が少ない配列は非常に大きくなる可能性があります。それらの表示はnumpy
コードによって制御されます。
In [101]: M
Out[101]:
<5x5 sparse matrix of type '<class 'numpy.float64'>'
with 5 stored elements in LInked List format>
In [102]: vars(M)
Out[102]:
{'_shape': (5, 5),
'data': array([[1.0], [1.0], [1.0], [1.0], [1.0]], dtype=object),
'dtype': dtype('float64'),
'maxprint': 50,
'rows': array([[0], [1], [2], [3], [4]], dtype=object)}
は多くのvarsを持つインポートされたモジュールです。 1つは、doc
がほぼ1ページ分を占めています。
In [103]: len(vars(argparse))
Out[103]: 52
arr
配列で、__dict__
を持っていない、とvars(arr)
はエラーになります。
これは、このディスプレイのwhos
ディスプレイです。アレイは、ipython
に固有の凝縮された形式で表示されます。
In [108]: %whos
Variable Type Data/Info
--------------------------------------
M lil_matrix (0, 0) 1.0\n (1, 1) 1.<...> (3, 3) 1.0\n (4, 4) 1.0
argparse module <module 'argparse' from '<...>b/python3.5/argparse.py'>
arr ndarray 10x3: 30 elems, type `int32`, 120 bytes
b ndarray 4x2: 8 elems, type `int32`, 32 bytes
choices list n=16
forbool function <function forbool at 0xb52950bc>
np module <module 'numpy' from '/us<...>kages/numpy/__init__.py'>
nr int 3
parser ArgumentParser ArgumentParser(prog='ipyt<...>r='error', add_help=True)
product type <class 'itertools.product'>
sparse module <module 'scipy.sparse' fr<...>cipy/sparse/__init__.py'>
sys module <module 'sys' (built-in)>
かなりのプリンタを書くことができます。ここでスタートだ:疎行列の場合
def pprt(var):
for k,v in vars(var).items():
if isinstance(v, np.ndarray):
astr = 'array {},{}'.format(v.dtype, v.shape)
if isinstance(v, (list, tuple, dict)):
if len(v)>10:
astr = 'big '+type(v)
else:
astr = str(v)
elif isinstance(v, str):
astr = v[:20]
else:
astr = str(v)
print(k,':',astr)
In [123]: pprt(M)
_shape : (5, 5)
dtype : float64
rows : [[0] [1] [2] [3] [4]]
data : [[1.0] [1.0] [1.0] [1.0] [1.0]]
maxprint : 50
しかしparser
オブジェクトのために、それは明らかに不十分である:
In [124]: pprt(parser)
conflict_handler : error
usage : None
prefix_chars : -
_action_groups : [<argparse._ArgumentGroup object at 0xb0c802ac>, <argparse._ArgumentGroup object at 0xb0c99ccc>]
_mutually_exclusive_groups : []
allow_abbrev : True
_optionals : <argparse._ArgumentGroup object at 0xb0c99ccc>
prog : ipython3
description : None
_actions : [_HelpAction(option_strings=['-h', '--help'], dest='help', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help='show this help message and exit', metavar=None), _StoreAction(option_strings=['--k'], dest='k', nargs=None, const=None, default=100, type=<class 'int'>, choices=None, help='numbers, %(default)s', metavar=None)]
....
オブジェクトは、多くの属性を持っています。クラス名が長いクラスもあります。いくつかのキーを持つ辞書ですが、長い値です。私はそれらを圧縮するために再帰のいくつかの並べ替えを行う必要があります。したがって、コンパクトなディスプレーヤーを書くことは可能ですが、それは多くの作業になります。
- 1. Azureストリーム解析解析出力をAzureテーブルに書き込む
- 2. 'adb version'の出力を解析できませんでした
- 3. カールの出力から日付を解析できません
- 4. Spacyの出力を解析する
- 5. WordPressのJson出力を解析する
- 6. プロローグの解析出力
- 7. node.jsのSTDERR出力をchild_process行ごとに解析する
- 8. awsでss出力を解析する
- 9. HTML出力を解析する方法
- 10. 端末の出力/入力を解析する方法は? (.bashrc?)
- 11. 出力が解析されない解析が発生する
- 12. Java:ffmpegの出力を解析します。
- 13. XERCESで解析中にテキストファイルの解析エラーを出力する方法
- 14. ジェンキンス、コンソール出力、解析、ログ
- 15. json_encodeの出力()スラッシュを含む文字列は、JSON.parse(で解析することはできません)
- 16. 左コーナー解析アルゴリズムとCYK解析アルゴリズムの間の解析にはどちらが最適ですか?なぜ?
- 17. は、txtファイルの出力を解析できませんpython - ValueError:閉じたファイルの入出力操作
- 18. Jenkins/Hudsonにカスタムテストスクリプトの出力を解析させる方法は?
- 19. VARS()私はこのコードを実行すると、Pythonは異なる出力
- 20. エンティティ・フレームワークのストアド・プロシージャの出力を解析する方法は?
- 21. 入力テキストの解析とファイルへの出力
- 22. テキストファイルを解析して列として出力するデータファイル
- 23. Python-JSON - APIの出力を解析する方法は?
- 24. デイドリームコントローラBLE GATTの出力を解析する方法は?
- 25. オンラインデモと同様に依存関係の解析出力を得るには?
- 26. PostgreSQLのEXPLAINコマンドの出力の解析
- 27. JavaScriptでのAmazon S3出力の解析
- 28. Azureデータレイク解析の空の出力ファイル
- 29. ハイブ用のjson出力の解析
- 30. 解析のrequests.get()出力パンダのdatafram
標準の 'pprint'を試しましたか? – jonrsharpe
ipthon '%whos'の表示は素晴らしいですが、' vars() 'のような辞書でそれを呼び出す方法はありません。 – hpaulj
@hpaulj ipython%whos? ... – Spacey