[Python]オブジェクトの属性を一覧で取得したり、確認したい

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は属性という意味になります。

参考:【Python】属性の一覧を取得する方法(2種類)

hasattrで特定の属性を持っているか確認

今度は一覧で確認するのではなく、決め打ちで特定の属性を持つかどうかをチェックします。

hasattr(変数, “チェックしたい属性”)で確認します。


# Personクラスは前のものを使用
mike = Person()
print(hasattr(mike, "greet"))
>>> True

例えば、__iter__なんかでチェックして、そのオブジェクトが__iter__メソッド(イテラブル)かをチェックできます。



カテゴリー