【Python】変数名を動的に決めて生成する方法

この記事では、Pythonで文字列や辞書、クラス属性を変数名として使用する方法について解説します。

目次から探す

文字列を変数名として使用する方法

Pythonでは、文字列を変数名として使用する方法がいくつかあります。

ここでは、その中でも代表的な方法を紹介します。

exec()関数を使用する方法

exec()関数は、文字列として与えられたPythonのコードを実行するための関数です。

これを使うことで、文字列を変数名として使用することができます。

以下は、exec()関数を使用して文字列を変数名として使用する例です。

var_name = "my_variable"
value = 10
exec(f"{var_name} = {value}")
print(my_variable)  # 出力結果: 10

この例では、var_nameという変数に文字列my_variableを、valueという変数に整数10を代入しています。

そして、exec()関数を使ってvar_nameの値を変数名として使用し、その変数にvalueの値を代入しています。

最後に、my_variableの値を出力しています。

globals()関数を使用する方法

globals()関数は、グローバルスコープの変数を辞書として返す関数です。

これを使うことで、辞書のキーとして文字列を使用し、その値を変数として扱うことができます。

以下は、globals()関数を使用して文字列を変数名として使用する例です。

var_name = "my_variable"
value = 10
globals()[var_name] = value
print(my_variable)  # 出力結果: 10

この例では、var_nameという変数に文字列my_variableを、valueという変数に整数10を代入しています。

そして、globals()関数を使ってvar_nameの値を辞書のキーとして使用し、その値にvalueの値を代入しています。

最後に、my_variableの値を出力しています。

locals()関数を使用する方法

locals()関数は、ローカルスコープの変数を辞書として返す関数です。

これを使うことで、辞書のキーとして文字列を使用し、その値を変数として扱うことができます。

以下は、locals()関数を使用して文字列を変数名として使用する例です。

def my_function():
    var_name = "my_variable"
    value = 10
    locals()[var_name] = value
    print(my_variable)  # 出力結果: 10
my_function()

この例では、my_function()という関数内でvar_nameという変数に文字列my_variableを、valueという変数に整数10を代入しています。

そして、locals()関数を使ってvar_nameの値を辞書のキーとして使用し、その値にvalueの値を代入しています。

最後に、my_variableの値を出力しています。

これらの方法を使うことで、文字列を変数名として動的に生成することができます。

locals()関数を使用する方法は、環境によっては動作しないので注意してください。

ただし、exec()関数globals()関数locals()関数は、適切に使わないと、予期しない結果やセキュリティ上の問題が発生する可能性がありますので、注意が必要です。

クラス属性を変数名として使用する方法

クラス属性を変数名として使用する方法には、いくつかのアプローチがあります。

ここでは、vars()関数getattr()関数、およびクラスの__dict__属性を使用する方法について説明します。

vars()関数を使用する方法

vars()関数は、オブジェクトの属性を辞書として返す組み込み関数です。

クラスの属性を辞書として取得することで、変数名として使用することができます。

以下は、vars()関数を使用してクラス属性を変数名として使用する例です。

class MyClass:
    def __init__(self):
        self.my_variable = 10
my_object = MyClass()
# クラス属性を変数名として使用する
variable_name = 'my_variable'
value = vars(my_object)[variable_name]
print(value)  # 出力: 10

getattr()関数を使用する方法

getattr()関数は、オブジェクトの属性を取得する組み込み関数です。

クラスの属性を取得することで、変数名として使用することができます。

以下は、getattr()関数を使用してクラス属性を変数名として使用する例です。

class MyClass:
    def __init__(self):
        self.my_variable = 10
my_object = MyClass()
# クラス属性を変数名として使用する
variable_name = 'my_variable'
value = getattr(my_object, variable_name)
print(value)  # 出力: 10

クラスの__dict__属性を使用する方法

クラスの__dict__属性は、クラスの属性を辞書として保持しています。

この辞書を使用して、クラス属性を変数名として使用することができます。

以下は、クラスの__dict__属性を使用してクラス属性を変数名として使用する例です。

class MyClass:
    def __init__(self):
        self.my_variable = 10
my_object = MyClass()
# クラス属性を変数名として使用する
variable_name = 'my_variable'
value = my_object.__dict__[variable_name]
print(value)  # 出力: 10

これらの方法を使用することで、クラス属性を変数名として動的に使用することができます。

適切な方法を選択し、プログラムの要件に応じて使用してください。

クラス属性とは、クラス内で定義された変数のことです。

クラスのインスタンス化後、そのインスタンスからアクセスできる変数です。

目次から探す