📔

Pythonで自身の親クラスを調べる方法

2024/07/19に公開

はじめに

Pythonでクラスの継承関係を理解することは、オブジェクト指向プログラミングにおいて重要です。
この記事では、Pythonで自身の親クラスを調べるための主な方法を紹介します。

ちなみに筆者は直近LangChainのクラス周りで__mro__にお世話になりました。

方法

  1. __bases__属性を使用する
    __bases__属性は、クラスの直接の親クラスをタプルとして返します。
class Parent:
    pass

class Child(Parent):
    pass


print(Child.__bases__)  # 出力: (<class '__main__.Parent'>,)

この方法は、直接の親クラスのみを取得したい場合に便利です。

  1. __mro__属性を使用する
    __mro__ (Method Resolution Order) 属性は、クラスの継承順序を表すタプルを返します。これには、クラス自身、すべての親クラス、そして最終的に object クラスが含まれます。
print(Child.__mro__)  # 出力: (<class '__main__.Child'>, <class '__main__.Parent'>, <class 'object'>)

この方法は、多重継承を含む複雑な継承構造を理解する場合に便利です。

まとめ

属性を用いることで、Pythonプログラムにおけるクラスの継承関係を効果的に調べることができます。

  • __bases__: 直接の親クラスを知りたい場合
  • __mro__: 完全な継承順序を知りたい場合

Discussion