[Python]オブジェクトの属性を一覧で取得したり、確認したい
Pythonでモジュールを使用している時や、Djangoアプリケーションを開発している時に元々ある属性を知りたいという場合のメモ。
dir()で属性を取得
dir()を使うことでその変数が持つ属性を確認することができます。dir(変数)の形で。
class Person():
name = ""
age = ""
def greet(self):
print("hello")
mike = Person()
attributes = dir(mike)
for attribute in attributes:
print(attribute)
# 実行結果
__class__
__delattr__
__dict__
# ~中略~
age
greet
name
__X__と特殊メソッドも出力していますが、最後の方に定義しているクラス変数やメソッドが確認できます。
dir()とすると、オブジェクトの属性一覧がイテラブルな形で出てくるのでforで出力してみました。
ちなみに、attributeは属性という意味になります。
hasattrで特定の属性を持っているか確認
今度は一覧で確認するのではなく、決め打ちで特定の属性を持つかどうかをチェックします。
hasattr(変数, “チェックしたい属性”)で確認します。
# Personクラスは前のものを使用
mike = Person()
print(hasattr(mike, "greet"))
>>> True
例えば、__iter__なんかでチェックして、そのオブジェクトが__iter__メソッド(イテラブル)かをチェックできます。