Функция dir() в Python

Python3 内置函数Встроенные функции Python3


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']

Ожидаемый вывод:

Возвращает список всех имён атрибутов и методов объекта.

Пояснение кода:

  1. Начинающиеся с двойного подчеркивания__являются специальными атрибутами/методами (магическими методами).
  2. Те, что без двойных подчеркиваний, являются публичными методами, такими как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']

Ожидаемый вывод:

['__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']

Ожидаемый вывод:

Возвращает список имён, доступных в текущей области видимости.

dir()Это мощный инструмент для исследования объектов и модулей Python, особенно подходящий для интерактивного обучения и отладки.


Python3 内置函数Встроенные функции Python3


Другие расширения