【Python】組み込みクラス属性「__bases__」の役割と使い方を解説
Pythonには、クラスオブジェクトにあらかじめ用意されている組み込みのクラス属性がいくつか存在します。そのひとつである__bases__は、参照するとそのクラスの基底クラス(親クラス)をタプル形式で返す属性です。
継承関係をプログラムから確認したい場合や、メタプログラミングでクラスの階層構造を動的に調べたいときに役立ちます。
__bases__の基本的な動作
以下のコードでは、親クラス(基底クラス)Aを継承した子クラスBを定義し、Bの__bases__を表示しています。
コード例
class A(object):
pass
class B(A):
pass
b = B()
print(B.__bases__)
実行結果
(<class '__main__.A'>,)
出力を見ると、Bの基底クラスであるAがタプルの要素として格納されていることがわかります。末尾のカンマは、この値が1つの要素を持つタプルであることを示しています。
複数継承の場合の挙動
__bases__はタプルを返すため、複数のクラスを継承している場合は、そのすべての基底クラスが宣言順に格納されます。
class C(object):
pass
class D(A, C):
pass
print(D.__bases__)
# (<class '__main__.A'>, <class '__main__.C'>)
類似属性「__base__」との違い
よく似た名前の__base__(単数形)という属性も存在します。こちらは最初に継承した基底クラスを1つだけ返す点が異なります。直接の基底クラスをすべて取得したい場合は__bases__を使いましょう。
-
Pythonの「print >>」構文とは?ファイルへの出力方法を解説
「print >>」は、Python 2における標準のprintステートメントを拡張するための構文です。この構文を使うと、デフォルトの出力先であるsys.stdout(標準出力)ではなく、任意のファイルライクなオブジェクトに対して直接出力できるようになります。つまり、画面に表示する代わりに、ファイルやその他の出力ストリームへ直接書き込むことが可能になります。基本的な使い方例えば、「my_file」という名前のファイルを開いた場合、次のように書き込むことができます。>>> my_file = open(my_file, w) >>> print &
-
Pythonの「%」演算子とは?文字列フォーマットの基本と使い方を解説
Pythonの「%」演算子の役割 Pythonにおける「%(パーセント)」は、文字列フォーマット演算子(補間演算子)として機能します。「format % values」という形式で記述すると、フォーマット文字列内の変換指定子が、values側の要素によって置き換えられます。この仕組みは、C言語のsprintf()関数とよく似ています。 基本的な使い方:文字列の埋め込み 最もシンプルな例は、文字列の中に変数の値を埋め込むケースです。 >>> lang = Python >>> print %s is awesome! % lang Python is awe