人生が変わるオンラインサロン!
月3万副業収入が得られる!Mサロン!31日間無料体験!Pythonをさらに学びたい方へ
Pythonを理解して頂くために参考書を執筆致しました!
Pythonのラムダ式、リスト、辞書型、Pandasなどを学びたい方にオススメの本となっています。演習問題をたくさん用意しているので、実践形式で理解しやすい内容となっています
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
PythonでChatGPTAPIを使ってブログ作成を自動化しませんか?
Pythonのsetattr関数について
Pythonのsetattr関数は、オブジェクトに新しい属性を設定するための関数です。
基本的な形式はsetattr(object, name, value)で、objectには属性を設定するオブジェクト、nameには設定する属性の名前、valueにはその属性に設定する値を指定します。

setattr関数の基本的な使い方
では、具体的なコードを見ていきましょう。ここでは、空のクラスに対して新たに属性を追加してみます。
ソースコード例
1 2 3 4 5 6 7 8 |
class MyClass: pass obj = MyClass() setattr(obj, 'attribute', 'value') print(obj.attribute) |
出力結果は以下の通りです。
出力結果
value

動的に属性を追加する
さらに、setattr関数は動的に属性を追加することも可能です。
つまり、実行時に属性の名前を決定し、オブジェクトに追加することができます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
class MyClass: pass obj = MyClass() for i in range(5): setattr(obj, f'attribute{i}', i) for i in range(5): print(getattr(obj, f'attribute{i}')) |
出力結果は以下の通りです。
出力結果
0
1
2
3
4

注意点として
ただし、setattr関数を使用する際にはいくつかの注意点があります。
まず、既存の重要なメソッドや属性を上書きしてしまう可能性があるため、注意が必要です。また、不必要に多くの属性を追加すると、コードの見通しが悪くなる可能性もあります。
注意点
1 2 3 4 5 6 7 |
class MyClass: def important_method(self): return 'important value' obj = MyClass() setattr(obj, 'important_method', 'value') # 重要なメソッドを上書きしてしまう print(obj.important_method) # 'value'と出力され、元のメソッドは消えてしまう |
出力結果は以下の通りです。
出力結果
value

まとめ
Pythonのsetattr関数は、動的にオブジェクトに属性を追加する際に非常に便利なツールです。
しかし、既存の重要なメソッドや属性を上書きするリスクもあるため、注意深く使用する必要があります。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!

人生が変わるオンラインサロン!
月3万副業収入が得られる!Mサロン!31日間無料体験!Pythonをさらに学びたい方へ
Pythonを理解して頂くために参考書を執筆致しました!
Pythonのラムダ式、リスト、辞書型、Pandasなどを学びたい方にオススメの本となっています。演習問題をたくさん用意しているので、実践形式で理解しやすい内容となっています
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
PythonでChatGPTAPIを使ってブログ作成を自動化しませんか?