Возвращает имена [переменных], доступные в локальной области, либо атрибуты указанного объекта в алфавитном порядке.
dir([obj])
-> list - Список имён/атрибутов в алфавитном порядке.
obj -- Объект, для которого следует вернуть имена атрибутов.

При вызове без аргумента, возвращает имена [переменных], доступные в локальной области, иначе — атрибуты указанного объекта.

    dir(int)  # ['__abs__', '__add__', '__and__', '__bool__', ... ]
dir('some') # ['__add__', '__class__', '__contains__', '__delattr__', ... ]

Определение в классе метода __dir__(), возвращающего список и имён, позволяет варьировать результат выполнения данной функии для экземпляров класса. Это может быть особенно полезно, когда класс определяет также методы доступа к атрибутам: __getattr__() и __getattribute__().

Для объектов, класс которых не определил __dir__(), функция попытается определить атрибуты по данным __dict__.

Возвращаемый список может включать не все атрибуты, особенно в случаях с переопределенным __getattr__().

Механизм извлечения имён может быть реализован по разному для различных типов:
1. Если объект является модулем, список будет содержать имена атрибутов модуля;
2. Если объект является типом или классом, список будет содержать имена атрибутов данного объекта и его родителей (вычисляются рекурсивно).
3. В других случаях список будет содержать имена атрибутов самого объекта, его класса, и классов-родителей (вычисляются рекурсивно).

На заметку
Рассматриваемая функция по большей части используется в интерактивном режиме интерпретатора, и заточена на выдачу скорее наиболее интересных атрибутов, нежели исчерпывающего их списка, а потому её поведение может меняться от выпуска к выпуску. Так, например, если объектом является класс, то атрибуты его метакласса возвращены не будут.
Синонимы поиска: dir
На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.