Pythonでクラス内のプロパティー名と値を取得する方法

記事内に広告が含まれています。

Pythonではクラスを作成することができます。

その中にあるプロパティー(メンバー変数)にどのようなものがあり、その値は何なのかを参照することができます。

この記事ではクラス内のプロパティー(メンバー変数)一覧とその値の取得方法を解説します。

Pythonでクラス内のプロパティー名と値を取得する

Pythonでクラス内のプロパティー名と値を取得するには2つの方法があります。

Pythonでクラス内のプロパティ名と値を取得する方法

  1. __dict__属性を利用する
  2. 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でクラス内のプロパティー名と値を取得する方法でした。

タイトルとURLをコピーしました