Python
 Computer >> コンピューター >  >> プログラミング >> Python

【初心者向け】Pythonのgetattr()関数とsetattr()関数の違いをわかりやすく解説

getattr()関数とは

getattr()関数は、Pythonの組み込み関数の一つで、オブジェクトが持つ「指定した名前の属性」の値を取得するために使われます。もし属性が見つからない場合は、あらかじめ指定しておいたデフォルト値を返すことができるのが特徴です。

基本構文

getattr(object, name[, default])

パラメータ

  • object:属性を取得したい対象のオブジェクト
  • name:取得したい属性の名前(文字列で指定)
  • default(省略可能):属性が存在しなかった場合に返す代替の値

戻り値

  • 指定した名前の属性が存在する場合 → その属性の値
  • 属性が存在せず、defaultが指定されている場合 → defaultの値
  • 属性が存在せず、defaultも指定されていない場合 → AttributeError例外が発生

使用例

class Person:
    def __init__(self):
        self.name = "太郎"

p = Person()
print(getattr(p, "name"))      # 太郎
print(getattr(p, "age", 20))   # 20(ageは存在しないためデフォルト値)
print(getattr(p, "age"))       # AttributeErrorが発生

setattr()関数とは

setattr()関数もPythonの組み込み関数で、オブジェクトの指定した属性に新しい値を設定するために使われます。なお、まだ存在しない属性名を指定した場合は、その場で新しい属性が動的に作成される点に注意してください。

基本構文

setattr(object, name, value)

パラメータ

  • object:属性を設定する対象のオブジェクト
  • name:設定したい属性の名前(文字列で指定)
  • value:設定する値

戻り値

setattr()関数は常にNoneを返します。これは、値の設定だけを行い、結果を返さないことを意味します。

使用例

class Person:
    pass

p = Person()
setattr(p, "name", "花子")
print(p.name)  # 花子

getattr()とsetattr()の違いまとめ

項目getattr()setattr()
主な用途属性値の取得属性値の設定
引数の数2〜3個3個
戻り値属性の値(またはデフォルト値)None
属性が存在しない場合デフォルト値を返すか、AttributeErrorが発生新しく属性が作成される

このように、getattr()は「読み取り専用のアクセス」、setattr()は「書き込み用のアクセス」と覚えると理解しやすいでしょう。動的に属性へアクセスしたい場面や、文字列で属性名を扱いたい場面で非常に便利な関数なので、ぜひ使いこなしてみてください。

  1. メソッドと関数の違いとは?JavaScriptのサンプルコードでわかりやすく解説

    メソッドと関数は同じもの?結論から言うと、メソッド(method)と関数(function)は本質的に同じものであり、呼び方が異なるだけです。オブジェクト指向プログラミングの世界では、プロシージャや関数のことを「メソッド」と呼ぶのが一般的です。関数とは何か関数とは、プログラム内のどこからでも呼び出すことのできる、再利用可能なコードのまとまりです。同じ処理を何度も書き直す必要がなくなるため、コードの重複を防ぎ、プログラマーがモジュール化された読みやすいコードを書く上で大きな助けとなります。JavaScriptにおける関数の基本構文以下は、JavaScriptで関数を定義する際の基本的な構文です。

  2. Pythonのtkinterとtkinter.ttkウィジェットの違いとは?スタイリング方法を解説

    tkinter.ttkは、tkinterウィジェットのスタイル(見た目)を設定するためのモジュールです。HTML要素にCSSでデザインを適用するように、tkinter.ttkを使うことでtkinterウィジェットの外観を自由にカスタマイズできます。 tkinterウィジェットとtkinter.ttkの主な違い tkinterウィジェットは、ボタン・ラベル・テキスト・スクロールバーなど、基本的なGUI部品を追加するために使用します。一方、tkinter.ttkは標準のtkinterよりも多くの種類のウィジェットをサポートしています。 tkinter.ttkではPlaceやPack()、Grid