Ответ
Метод dir() используется для интроспекции — получения списка допустимых атрибутов и методов объекта. Это ключевой инструмент для исследования структуры неизвестных модулей, классов или объектов во время разработки и отладки.
Основные сценарии использования:
- Исследование объектов: Быстро понять, что можно сделать с объектом.
- Отладка: Проверить, какие атрибуты были установлены.
- Интерактивная работа: В REPL (Python shell, Jupyter) для изучения API.
Примеры:
# 1. Исследование встроенного объекта
my_list = [1, 2, 3]
print(dir(my_list)) # Покажет методы: append, pop, sort, __len__ и т.д.
# 2. Исследование пользовательского класса
class MyClass:
"""Простой класс для демонстрации."""
class_attr = "I am a class attribute"
def __init__(self, value):
self.instance_attr = value
def show(self):
return self.instance_attr
obj = MyClass(42)
# dir() покажет ВСЕ атрибуты: унаследованные, методы, пользовательские
attributes = dir(obj)
print("class_attr" in attributes) # True
print("instance_attr" in attributes) # True
print("show" in attributes) # True
print("__init__" in attributes) # True
# 3. dir() без аргументов возвращает имена в текущей локальной области видимости
def test_function():
local_var = "hidden"
print(dir()) # Выведет: ['local_var']
test_function()
Важные детали:
dir()возвращает отсортированный список строк.- Он вызывает внутренний метод объекта
__dir__(), который можно переопределить для кастомного поведения. - Список включает не только пользовательские атрибуты, но и все унаследованные методы и специальные (dunder) методы (
__str__,__dict__и т.д.). - Для более детального изучения часто используют
help()для документации илиobj.__dict__для просмотра только пространства имен экземпляра.