setattr() 属性の設定
最終更新:2026-09-22
setattr() 属性の設定
setattr(obj, name, value) は obj の属性 name を value に設定する。obj.name = value と等価。
| カテゴリ | 組み込み関数 |
|---|---|
| 種類 | 組み込み関数 |
| Python バージョン | all |
📝 構文
setattr(object, name, value)
⚙️ 引数
| object 必須 | The object whose attribute is set. |
|---|---|
| name 必須 | The attribute name (string). |
| value 必須 | The value to assign. |
戻り値:None; the attribute is set in place.
💥 例外
AttributeError— Raised when the attribute cannot be set (read-only or restricted by __slots__).
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
100
🏷️ 関連する組み込み関数
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Qsetattr(obj, 'x', 100) と obj.x = 100 に違いはありますか?
A機能的に等価です。setattr の利点は、属性名を変数や動的に計算された文字列にできることで、リフレクティブなプログラミングに適しています。
Qsetattr の代表的な用途は?
A設定の読み込みやオブジェクトのマッピングです。for k, v in config.items(): setattr(obj, k, v) で辞書を一括でオブジェクトの属性に変換できます。
Q読み取り専用の属性に代入するとどうなりますか?
AAttributeError: can't set attribute が発生します。例えば getter しか定義していない property への代入が該当します。
Q__slots__ を定義したクラスに任意の属性を set できますか?
Aできません。__slots__ で宣言した属性名しか設定できず、それ以外の名前を設定すると AttributeError になります。