Pythonにおけるsetattr()の利用方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonにおけるsetattr()の利用方法について現役エンジニアが解説しています。setattr()関数というのは、Pythonにおいてオブジェクトの属性を追加したい場合に使われる組み込み関数です。属性はオブジェクトの変数のことです。Pythonでオブジェクトに変数を追加してみましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

Pythonにおけるsetattr()の利用方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

 

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonにおけるsetattr()の利用方法について詳しく説明していくね!

大石ゆかり

お願いします!

 
この記事では、初心者の方向けにPythonのsetattr()関数について解説します。
 

setattr()とは?

setattr()関数というのは、Pythonにおいて「オブジェクト」の「属性」を追加したい場合に使われる組み込み関数です。

(補足:組み込み関数というのは、Pythonに標準で用意された関数のことで、import文などを使わなくても使える関数です。print()関数などは馴染み深いと思います。)

オブジェクトについてよく知らない、勉強したことがない、という方はオブジェクト=「複数のデータとその扱い方をセットにしたもの」ぐらいの認識でいてもらって構いません。

「属性」というのは、要するに「オブジェクトの変数」です。

setattr()を使うことによって、オブジェクトに変数を追加できます。
 

setattr()の使い方

setattr()関数は次のように記述します。

setattr(オブジェクト, 追加したい属性, 値)

属性を追加したいオブジェクトはあらかじめ定義しておいてください。

settattr()関数の便利なところは、単に、オブジェクトに属性を追加できるだけではなく、オブジェクトの属性が多い場合などにオブジェクトの初期化を行なうコードを必要最小限にして書ける点です。

例えば、通常、クラス(オブジェクトの一種)を定義する場合には、__init__()関数に初期化に必要な処理を記述しますが、

class Sample :
    def __init__(self, params) :
        if not 'name' in params :  #'name'属性があるかチェック
            raise KeyError('name')
        if not 'category' in params :  #'category'属性があるかチェック
            raise KeyError('category')
        self.name     = params['name']
        self.category = params['category']

などのように、複数の属性を初期化する場合、引数に必要な値があることをチェックしようとするとコードが長くなってしまいます。

一方、setattr()関数を使うと、

class Sample :
    def __init__(self, params) :
        keys = ['name', 'category']
        for key in keys :
            if not key in params :
                raise KeyError(key)
            setattr(self, key, params[key])

のように、いくら属性を増やしたとしても、keysを変更するだけでよく、コードをシンプルに短く記述できます。
 

[PR] Pythonで挫折しない学習方法を動画で公開中

setattr()を利用して属性を追加してみよう

では、実際に、setattr()を利用して、属性を追加してみましょう。

まずは、クラスを定義しておきます。

class Sample :
  def __init__(self, ):
    pass  #処理をスキップするための構文です

passという構文を使うことで、クラスの初期化で何も行なわないようにしておきます。

あとは、このクラスを使ってオブジェクトを作り、属性を追加してみましょう。

今回は、Tomというオブジェクトを作って、name属性に’Tom’という自分の名前を追加することにします。

Tom = Sample()
setattr(Tom, 'name', 'Tom')
print(Tom.name)

以上を実行すると、’Tom’と表示されて、属性の追加が確認できました。

この記事では、Pythonのsetattr()関数というオブジェクトに属性を追加する関数を紹介しました。

オブジェクトに使える便利な関数なのでぜひ実践してみてください。
 

監修してくれたメンター

小倉翔悟(おぐらしょうご)

AIプログラミングを使って開発を行う大学3年生。

プログラミング歴は約3年でPythonは割と得意。好きな物理理論は一般相対性理論で動物も好き。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。