Pythonではクラスを作成することができます。
その中にあるプロパティー(メンバー変数)にどのようなものがあり、その値は何なのかを参照することができます。
この記事ではクラス内のプロパティー(メンバー変数)一覧とその値の取得方法を解説します。
Pythonでクラス内のプロパティー名と値を取得する
Pythonでクラス内のプロパティー名と値を取得するには2つの方法があります。
- __dict__属性を利用する
- vars関数を利用する
__dict__属性を利用する方法
1つ目は「__dict__属性」を利用する方法です。
Pythonではクラス、インスタンス、モジュールはすべて「__dict__属性」を持っています。
__dict__属性の.items()メソッドを利用すればすべてのプロパティー(メンバー変数)が取得できます。
#クラス定義 class ParentClass(): def __init__( self, name ): self.名前 = name #親クラスのプロパティー def setAge( self, age ): self.年齢 = age #メソッドで追加したプロパティー class ChildClass( ParentClass ): def __init__( self, name ): super().__init__( name ) self.性別='女性' #子クラスだけのプロパティー #親クラスのインスタンス生成 parent = ParentClass( 'たろうくん' ) parent.setAge( 30 ) #呼び出した時点でプロパティーが生成されるので、呼び出さないと「年齢」は表示されない #子クラスのインスタンス生成 child = ChildClass( 'はなこさん' ) child.setAge( 22 ) #呼び出した時点でプロパティーが生成されるので、呼び出さないと「年齢」は表示されない print( '***親クラスのプロパティー表示***' ) for key, value in parent.__dict__.items(): print( key, 'は', value, 'です' ) print( 'n***子クラスのプロパティー表示***' ) for key, value in child.__dict__.items(): print( key, 'は', value, 'です' )
実行結果は
***親クラスのプロパティー表示*** 名前 は たろうくん です 年齢 は 30 です ***子クラスのプロパティー表示*** 名前 は はなこさん です 性別 は 女性 です 年齢 は 22 です
になります。
「年齢」プロパティーはコンストラクターで生成されていないため、setAge()メソッドがコールされるまでは表示されません。
「性別」プロパティーは子クラス(サブクラス)にしかないため、親クラス(基底クラス)では表示されません。
親クラス(基底クラス)でも子クラス(サブクラス)でも同様にプロパティー(メンバー変数)の名前と値を取得することができます。
vars関数を利用する方法
次に「vars関数」を利用する方法ですが、これは「vars」関数を呼ぶだけでです。
#クラス定義 class ParentClass(): def __init__( self, name ): self.名前 = name #親クラスのプロパティ def setAge( self, age ): self.年齢 = age #メソッドで追加したプロパティ class ChildClass( ParentClass ): def __init__( self, name ): super().__init__( name ) self.性別='女性' #子クラスだけのプロパティ #親クラスのインスタンス生成 parent = ParentClass( 'たろうくん' ) parent.setAge( 30 ) #呼び出した時点でプロパティが生成されるので、呼び出さないと「年齢」は表示されない #子クラスのインスタンス生成 child = ChildClass( 'はなこさん' ) child.setAge( 22 ) #呼び出した時点でプロパティが生成されるので、呼び出さないと「年齢」は表示されない print( '***親クラスのvars***' ) print( vars( parent )) print( 'n***子クラスのvars***' ) print( vars( child ))
上記の実行結果は
***親クラスのvars*** {'名前': 'たろうくん', '年齢': 30} ***子クラスのvars*** {'名前': 'はなこさん', '性別': '女性', '年齢': 22}
になります。
「年齢」プロパティーはコンストラクターで生成されていないため、setAge()メソッドがコールされるまでは表示されません。
「性別」プロパティーは子クラス(サブクラス)にしかないため、親クラス(基底クラス)では表示されません。
vars関数でも親クラス(基底クラス)でも子クラス(サブクラス)も同様にプロパティー(メンバー変数)の名前と値を取得することができます。
まとめ
Pythonでクラス内のプロパティー名と値は「__dict__属性」か「vars関数」を利用することで取得できます。
以上、Pythonでクラス内のプロパティー名と値を取得する方法でした。