Python入門から応用までの学習サイト


属性の有無チェック (hasattr)

Pythonでは、指定のオブジェクトが特定の属性を持っているかを確認するhasattr関数があります。

次のようにして判別を行います。

# -*- coding: utf-8 -*-


class AttrTest():

    def __init__(self):
        self.code = -1


attr_test = AttrTest()
attr_test.name = 'python-izm'

print hasattr(attr_test, 'code')
print hasattr(attr_test, 'name')
print hasattr(attr_test, 'kana')

--実行結果--

True
True
False

上記のようなコードの場合、AttrTestクラスのインスタンスは「code」と「name」属性を持っているためTrueが返り、「kana」属性は持っていないためFalseが返ります。



hasattr関数はgetattr関数を利用して実装されています。 getattr関数を使用した場合、保持していない属性を取得しようとするとAttributeErrorが発生しますが、第三引数でデフォルト値が設定されている場合はその値が返ります。

# -*- coding: utf-8 -*-


class AttrTest():

    def __init__(self):
        self.code = -1


attr_test = AttrTest()
attr_test.name = 'python-izm'

print getattr(attr_test, 'code')
print getattr(attr_test, 'name')
# print getattr(attr_test, 'kana')
print getattr(attr_test, 'kana', 'No Attr')

--実行結果--

-1
python-izm
No Attr

15行目はAttributeErrorが発生しますが、16行目ではデフォルト値である「No Attr」が返されます。




Python
スタートブック


入門 Python 3


Effective
Python


退屈なことは
Pythonにやらせよう

 
 
 

呼び出し可能なオブジェクトなのかを確認!



確かな力が身につく
Python「超」入門




P  R