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

Pythonの組み込みクラス属性とは?__dict__や__doc__などの主要属性をわかりやすく解説

Pythonの組み込みクラス属性(Built-in Class Attributes)とは

Pythonでは、クラスを定義すると、明示的に宣言しなくても自動的に用意される「組み込みクラス属性」がいくつか存在します。これらは通常の属性と同じように、ドット(.)演算子を使って classname.__dict__ の形式でアクセスできます。

本記事では、Python公式ドキュメントに記載されている代表的な組み込みクラス属性を一つずつ解説します。

主な組み込みクラス属性の一覧

1. __dict__:クラスの名前空間

__dict__ は、そのクラスが持つ名前空間(namespace)を格納した辞書型の属性です。クラス内で定義されたメソッドや変数などの情報がこの辞書に収められています。

2. __doc__:クラスのドキュメンテーション文字列

__doc__ には、クラス定義時に記述したdocstring(ドキュメンテーション文字列)が格納されます。docstringが定義されていない場合は None となります。

3. __name__:クラス名

__name__ は、クラスの名前を文字列として返す属性です。動的に生成したオブジェクトから元のクラス名を確認したい場合などに便利です。

4. __module__:クラスが定義されているモジュール名

__module__ は、そのクラスがどのモジュールで定義されたかを示す属性です。対話モード(インタラクティブシェル)で実行した場合、この属性の値は "__main__" になります。

5. __bases__:基底クラス(親クラス)のタプル

__bases__ は、継承元となった基底クラスを格納するタプルです。タプル内の順序は、クラス定義時の基底クラスリストにおける出現順と一致します。継承関係を持たないクラスの場合、このタプルは空になる可能性があります。

実行例で確認してみよう

以下のコードで、実際に組み込みクラス属性へアクセスする様子を確認できます。

class SampleClass:
    """これはサンプルクラスです。"""
    pass

print(SampleClass.__doc__)     # これはサンプルクラスです。
print(SampleClass.__name__)    # SampleClass
print(SampleClass.__module__)  # __main__
print(SampleClass.__bases__)   # (<class 'object'>,)
print(SampleClass.__dict__)    # クラスの名前空間を含む辞書が出力される

まとめ

組み込みクラス属性を活用することで、クラスの構造や継承関係、定義場所などの情報をプログラムから動的に取得できます。デバッグやリフレクション処理、メタプログラミングを行う際に非常に役立つため、ぜひ覚えておきましょう。

  1. Pythonのファイルオブジェクトの主な属性とメソッドを徹底解説

    Pythonでは、open()関数を使ってファイルを開くと「ファイルオブジェクト」が返されます。このオブジェクトは、ファイルの読み書きや状態管理を行うための多数の属性とメソッドを持っています。本記事では、特によく使われるメソッドと属性について、具体例を交えながらわかりやすく解説します。 よく使われるファイルオブジェクトのメソッド close() ― 開いたファイルを閉じます。ファイル操作が終わったら必ず呼び出し、リソースを解放しましょう。 next() ― ファイルをイテレータとして扱う際に呼び出されるメソッドです。for line in f: のようにforループでファイルを回すとき、この

  2. Pythonの予約キーワード(予約語)とは?一覧と確認方法をわかりやすく解説

    予約語(キーワード)とは予約語(reserved words)は「キーワード」とも呼ばれ、言語仕様の中であらかじめ意味と構文が定義された特別な単語のことです。条件分岐やループ処理といったプログラミング命令を記述する際には、必ずこれらのキーワードを使用します。重要なポイントとして、予約語は変数名や関数名など、他のプログラミング要素の識別子(identifier)として使用できません。例えば「def」や「import」という名前の変数を作成しようとすると、SyntaxError(構文エラー)が発生します。Python 3の予約キーワード一覧以下は、Python 3で定義されている予約キーワードの一