Função built-in dir() do Python

Da documentação do Python 3

Sem argumentos, retorna a lista de nomes no escopo local atual. Com um argumento, tenta retornar uma lista de atributos válidos para esse objeto.

Introdução

A função dir() em Python é uma função built-in poderosa que retorna uma lista de nomes no namespace atual ou os atributos de um objeto fornecido. É comumente usada para introspecção e exploração de objetos, módulos e classes, ajudando você a descobrir os métodos, atributos e nomes disponíveis com os quais pode trabalhar.

Sintaxe

dir([object])
  • object (opcional): O objeto cujos atributos você deseja explorar. Se não for fornecido, retorna os nomes no namespace atual.

Explorando Nomes no Namespace Atual

a = 10
b = "Hello"
def my_function():
    pass

print(dir())
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'my_function']

Explorando Atributos de Módulo

import math
print(dir(math))
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', ... ]

Explorando Atributos de Objeto

class MyClass:
    def __init__(self):
        self.x = 5
        self.y = "Hello"

obj = MyClass()
print(dir(obj))
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', ... 'x', 'y']

Usando dir() com Tipos Built-in

my_list = [1, 2, 3]
print(dir(my_list))
[..., 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Filtrando a Saída de dir()

import math
print([name for name in dir(math) if not name.startswith("__")])
['acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', ... ]