Open3

python inspect詳細

fastriverfastriver
# numpyモジュールのメンバ一覧を取得
member_list = inspect.getmembers(numpy)
for member in member_list:
  print(member)
  • memberは(name, value)という形式のタプル
    • nameはstr
    • valueは色々な型が入る

変数

('ALLOW_THREADS', 1)

2つ目が定数

class

('AxisError', <class 'numpy.AxisError'>)

クラス定義

function

('where', <function where at 0x000001927814E9D0>)

関数定義

module

('warnings', <module 'warnings' from 'warnings.py'>)

モジュール

built-in function

('array', <built-in function array>)

組み込み関数?

fastriverfastriver

メンバ関数

https://docs.python.org/ja/3.9/library/inspect.html#inspect.Signature

inspect.signature(<function>)で引数やアノテーションの情報を得られる

def func1():
  pass
signature = inspect.signature(func1)

signature.return_annotationで返り値の型アノテーションを得られる

def hoge():
    pass

print(inspect.signature(hoge).return_annotation)
# -> <class 'inspect._empty'>

def hoge() -> int:
    pass

print(inspect.signature(hoge).return_annotation)
# -> <class 'int'>

signature.parametersで引数一覧を得られる。構造はOrderedMapで、キーが引数名(str)、値がinspect.Parameterオブジェクトである。

https://docs.python.org/ja/3.9/library/inspect.html#inspect.Parameter

inspect.Parameterは引数1つの情報を持っている。

  • Parameter.name: str -> 引数名
  • Parameter.default -> 引数のデフォルト値
  • Parameter.annotation -> 引数の型アノテーション
  • Parameter.kind -> 引数の分類
    • Parameter.POSITIONAL_ONLY -> 位置限定引数(/の後に出てくるやつら)
    • Parameter.POSITIONAL_OR_KEYWORD -> 通常の引数
    • Parameter.VAR_POSITIONAL -> 可変長引数(*args)
    • Parameter.KEYWORD_ONLY -> キーワード限定引数(*の後に出てくるやつら)
    • Parameter.VAR_KEYWORD -> 可変キーワード引数(**kwargs)