Функция dir() в Python
dir()Это встроенная функция в Python, используемая для получения списка атрибутов и методов объекта.
dir()Возвращает список, содержащий имена всех атрибутов и методов объекта. Эта функция очень полезна для изучения неизвестных объектов, отладки кода и понимания структур классов.
Определение слова: dirДаdirectoryСокращение от (directory), здесь относится к списку атрибутов и методов.
Базовый синтаксис и параметры
Формат синтаксиса
dir(object) dir()
Описание параметра
- Параметр object(Необязательно):
- Тип: любой объект
- Описание: Объект, список атрибутов которого вы хотите получить. Если параметр не передан, возвращается список имён в текущей области видимости.
Описание функций
- Возвращаемое значение: Возвращает список строк, содержащих имена атрибутов и методов.
- Особенности: Список отсортирован по алфавиту.
Примеры
Пример 1: Просмотр атрибутов объекта
Пример
# Просмотр всех атрибутов и методов списка
print(dir([]))
# Вывод: ['__add__', '__class__', '__contains__', ... 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
# Просмотр атрибутов строки
print(dir(""))
# Вывод: ['__add__', '__class__', '__contains__', ... 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
# Просмотр атрибутов словаря
print(dir({}))
# Вывод: ['__class__', '__contains__', ... 'clear', 'copy', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
print(dir([]))
# Вывод: ['__add__', '__class__', '__contains__', ... 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
# Просмотр атрибутов строки
print(dir(""))
# Вывод: ['__add__', '__class__', '__contains__', ... 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
# Просмотр атрибутов словаря
print(dir({}))
# Вывод: ['__class__', '__contains__', ... 'clear', 'copy', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
Ожидаемый вывод:
Возвращает список всех имён атрибутов и методов объекта.
Пояснение кода:
- Начинающиеся с двойного подчеркивания
__являются специальными атрибутами/методами (магическими методами). - Те, что без двойных подчеркиваний, являются публичными методами, такими как
append,sortи т. д.
Пример 2: Просмотр атрибутов пользовательского класса
Пример
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Привет, я {self.name}"
# Создать экземпляр
p = Person("Tom", 20)
# Просмотр атрибутов экземпляра
print(dir(p))
# Вывод: ['__class__', '__delattr__', '__dict__', '__init__', ... 'age', 'greet', 'name']
# Фильтрация, чтобы показать только неспециальные методы
attrs = [attr for attr in dir(p) if not attr.startswith('_')]
print(attrs) # Вывод: ['age', 'greet', 'name']
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Привет, я {self.name}"
# Создать экземпляр
p = Person("Tom", 20)
# Просмотр атрибутов экземпляра
print(dir(p))
# Вывод: ['__class__', '__delattr__', '__dict__', '__init__', ... 'age', 'greet', 'name']
# Фильтрация, чтобы показать только неспециальные методы
attrs = [attr for attr in dir(p) if not attr.startswith('_')]
print(attrs) # Вывод: ['age', 'greet', 'name']
Ожидаемый вывод:
['__class__', '__delattr__', '__dict__', '__init__', ... 'age', 'greet', 'name'] ['age', 'greet', 'name']
Пояснение кода:
__dict__Содержит атрибуты экземпляра объекта.- Filter
__исключить методы, начинающиеся с (двойных подчеркиваний), чтобы получить публичные атрибуты.
Пример 3: Использование без параметров
Пример
# Без параметров возвращает список имён в текущей области видимости
print(dir())
# Вывод: ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
# Просмотр после импорта модуля
import os
print(dir())
# Включит 'os' в список
# Просмотр атрибутов модуля
import json
print(dir(json))
# Вывод: ['JSONDecodeError', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'tool']
print(dir())
# Вывод: ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
# Просмотр после импорта модуля
import os
print(dir())
# Включит 'os' в список
# Просмотр атрибутов модуля
import json
print(dir(json))
# Вывод: ['JSONDecodeError', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'tool']
Ожидаемый вывод:
Возвращает список имён, доступных в текущей области видимости.
dir()Это мощный инструмент для исследования объектов и модулей Python, особенно подходящий для интерактивного обучения и отладки.
Другие расширения
Встроенные функции Python3