1. ホーム
  2. python

[解決済み] オブジェクトの現在のプロパティと値をすべて表示する組み込み関数はありますか?

2022-03-16 11:36:35

質問

つまり、私がここで求めているのは、PHP の print_r という関数があります。

これは、問題のオブジェクトの状態を見ることで、自分のスクリプトをデバッグできるようにするためです。

どのように解決するのですか?

本当に2つの異なるものを混ぜているのですね。

使用方法 dir() , vars() または inspect モジュールを使って、興味のあるものを手に入れることができます(私が使っているのは __builtins__ 例として、任意のオブジェクトを使用することができます)。

>>> l = dir(__builtins__)
>>> d = __builtins__.__dict__

その辞書を好きなように派手に印刷する。

>>> print l
['ArithmeticError', 'AssertionError', 'AttributeError',...

または

>>> from pprint import pprint
>>> pprint(l)
['ArithmeticError',
 'AssertionError',
 'AttributeError',
 'BaseException',
 'DeprecationWarning',
...

>>> pprint(d, indent=2)
{ 'ArithmeticError': <type 'exceptions.ArithmeticError'>,
  'AssertionError': <type 'exceptions.AssertionError'>,
  'AttributeError': <type 'exceptions.AttributeError'>,
...
  '_': [ 'ArithmeticError',
         'AssertionError',
         'AttributeError',
         'BaseException',
         'DeprecationWarning',
...

プリティプリントは、インタラクティブデバッガでもコマンドとして利用できます。

(Pdb) pp vars()
{'__builtins__': {'ArithmeticError': <type 'exceptions.ArithmeticError'>,
                  'AssertionError': <type 'exceptions.AssertionError'>,
                  'AttributeError': <type 'exceptions.AttributeError'>,
                  'BaseException': <type 'exceptions.BaseException'>,
                  'BufferError': <type 'exceptions.BufferError'>,
                  ...
                  'zip': <built-in function zip>},
 '__file__': 'pass.py',
 '__name__': '__main__'}