Python のインスタンスから「メソッドだけ」「変数だけ」などの情報を取得する
Python でインスンタンスから「メソッドと変数」を取得するには組み込み関数である dir() を利用します。 dir()
を活用し、インスタンスから「メソッドだけ」や「変数だけ」を取得する方法をメモしておきます。 対象は何でも良かったのですが、今回は pydub に対して実行してみました。
検証環境¶
対象 | バージョン |
---|---|
macOS | 15.0 |
Python | 3.11.10 |
メソッド・変数を取得する¶
メソッドと変数の両方を取得するには dir()
を利用します。
サンプルコード¶
1 2 3 4 5 6 |
|
実行結果¶
$ python3 sample1.py
['DEFAULT_CODECS',
'__add__',
'__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getstate__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__module__',
'__mul__',
'__ne__',
'__new__',
'__radd__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__sub__',
'__subclasshook__',
'__weakref__',
'_data',
'_from_safe_wav',
'_parse_position',
'_repr_html_',
'_spawn',
'_sync',
'append',
'apply_gain',
'apply_gain_stereo',
'apply_mono_filter_to_each_channel',
'array_type',
'channels',
'compress_dynamic_range',
'converter',
'dBFS',
'duration_seconds',
'empty',
'export',
'fade',
'fade_in',
'fade_out',
'ffmpeg',
'frame_count',
'frame_rate',
'frame_width',
'from_file',
'from_file_using_temporary_files',
'from_flv',
'from_mono_audiosegments',
'from_mp3',
'from_ogg',
'from_raw',
'from_wav',
'get_array_of_samples',
'get_dc_offset',
'get_frame',
'get_sample_slice',
'high_pass_filter',
'invert_phase',
'low_pass_filter',
'max',
'max_dBFS',
'max_possible_amplitude',
'normalize',
'overlay',
'pan',
'raw_data',
'remove_dc_offset',
'reverse',
'rms',
'sample_width',
'set_channels',
'set_frame_rate',
'set_sample_width',
'silent',
'speedup',
'split_to_mono',
'strip_silence']
メソッドだけ取得する¶
メソッドだけを取得したい場合、dir()
した結果から callable()
であるもの だけを抽出します。
サンプルコード¶
1 2 3 4 5 6 7 |
|
実行結果¶
$ python3 sample2.py
['__add__',
'__class__',
'__delattr__',
'__dir__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getstate__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__radd__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__sub__',
'__subclasshook__',
'_from_safe_wav',
'_parse_position',
'_repr_html_',
'_spawn',
'_sync',
'append',
'apply_gain',
'apply_gain_stereo',
'apply_mono_filter_to_each_channel',
'compress_dynamic_range',
'empty',
'export',
'fade',
'fade_in',
'fade_out',
'frame_count',
'from_file',
'from_file_using_temporary_files',
'from_flv',
'from_mono_audiosegments',
'from_mp3',
'from_ogg',
'from_raw',
'from_wav',
'get_array_of_samples',
'get_dc_offset',
'get_frame',
'get_sample_slice',
'high_pass_filter',
'invert_phase',
'low_pass_filter',
'normalize',
'overlay',
'pan',
'remove_dc_offset',
'reverse',
'set_channels',
'set_frame_rate',
'set_sample_width',
'silent',
'speedup',
'split_to_mono',
'strip_silence']
変数だけ取得する¶
変数だけを取得したい場合、「メソッドだけを取得する」場合と考え方が逆になります。 具体的には dir()
した結果から callable()
ではないもの だけを抽出します。
サンプルコード¶
1 2 3 4 5 6 7 |
|
実行結果¶
$ python3 sample3.py
['DEFAULT_CODECS',
'__dict__',
'__doc__',
'__module__',
'__weakref__',
'_data',
'array_type',
'channels',
'converter',
'dBFS',
'duration_seconds',
'ffmpeg',
'frame_rate',
'frame_width',
'max',
'max_dBFS',
'max_possible_amplitude',
'raw_data',
'rms',
'sample_width']
引数を取得する¶
メソッドの引数を知りたい場合は inspect の signature を使います。
サンプルコード¶
1 2 3 4 5 6 |
|
実行結果¶
$ python3 sample4.py
(file, parameters=None)