Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでクラスのメソッド(関数)を列挙する方法

Pythonでは、標準ライブラリのinspectモジュールを使うことで、特定のクラスが持つメソッド(関数)を簡単に一覧表示できます。inspect.getmembers()inspect.ismethodを述語(predicate)として渡すと、そのクラスに定義されているすべてのメソッドをタプルのリストとして取得できます。

サンプルコード

以下は、クラスfooのメソッドを列挙して出力する例です。

import inspect

class foo:
    def __init__(self):
        self.x = x

    def bar(self):
        pass

    def baz(self):
        pass

print(type(foo))
print(inspect.getmembers(foo, predicate=inspect.ismethod))

実行結果

<class '__main__.foo'>
[('__init__', <function foo.__init__ at 0x...>), ('bar', <function foo.bar at 0x...>), ('baz', <function foo.baz at 0x...>)]

解説

inspect.getmembers(オブジェクト, predicate=条件)は、指定したオブジェクトの属性をすべて走査し、条件に合致するものだけを(名前, 値)というタプルのリストとして返します。ここではpredicate=inspect.ismethodを指定しているため、クラス内に定義されたメソッドのみが抽出されます。

実行結果からわかるように、__init__barbazの3つのメソッドが名前付きで取得できています。

補足:dir()を使った簡易的な方法

より手軽にメソッド名だけを確認したい場合は、組み込み関数dir()を利用する方法もあります。

print([name for name, _ in inspect.getmembers(foo, predicate=inspect.ismethod)])
# ['__init__', 'bar', 'baz']

このように、inspectモジュールを活用すれば、クラスの構造を動的に調べたり、デバッグやドキュメント生成などに役立てることができます。

  1. Pythonでクラスを作成する方法を基礎から解説

    Pythonでは class 文を使って新しいクラスを定義します。クラス名はキーワード class の直後に記述し、その後にコロン(:)を付けます。class ClassName: 任意のクラスドキュメント文字列 class_suiteクラスにはドキュメント文字列を持たせることができ、ClassName.__doc__ で参照できます。class_suite には、クラスのメンバー、データ属性、関数などを定義するすべてのステートメントが含まれます。サンプルコード以下は、シンプルなPythonクラスの例です。class Employee: 全従業員に共通する基底クラス

  2. Pythonの継承とは?単一継承と階層継承の基本をサンプルコードで解説

    本記事では、Python 3.xにおける継承(インヘリタンス)とクラスの拡張方法について詳しく解説します。 継承とは、現実世界のモノや概念の関係性を自然に表現できる、オブジェクト指向プログラミングの中核となる仕組みです。継承を活用すると、次のようなメリットが得られます。 再利用性:すでに書いたコードを流用でき、重複を削減できる 推移性:クラス間の関係を連鎖的に引き継げる 開発速度の向上:ゼロから書かずに済むため、短期間で開発できる 保守性・拡張性:既存クラスを壊さずに機能を追加しやすい 継承の5つの種類 Pythonの継承は、その構造によって主に以下の5種類に分類されます。 単一継承(