Función dir() de Python
Funciones integradas de Python3
dir()Es una función integrada de Python que se utiliza para obtener la lista de atributos y métodos de un objeto.
dir()Devuelve una lista con los nombres de todos los atributos y métodos del objeto. Esta función es muy útil para explorar objetos desconocidos, depurar código y comprender la estructura de las clases.
Significado de la palabra: dirSídirectoryAbreviatura de (directorio), aquí se refiere a la lista de atributos y métodos.
Sintaxis básica y parámetros
Formato de sintaxis
dir(object) dir()
Descripción de parámetros
- Parámetro object(Opcional):
- Tipo: cualquier objeto
- Descripción: el objeto del que se desea obtener la lista de atributos. Si no se pasa ningún argumento, devuelve la lista de nombres del ámbito actual.
Descripción de la función
- Valor de retorno: Devuelve una lista de cadenas que contiene los nombres de los atributos y métodos.
- Características: La lista está ordenada alfabéticamente.
Ejemplos
Ejemplo 1: Ver los atributos de un objeto
Ejemplo
print(dir([]))
# Salida: ['__add__', '__class__', '__contains__', ... 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
# Ver los atributos de la cadena
print(dir(""))
# Salida: ['__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']
# Ver los atributos del diccionario
print(dir({}))
# Salida: ['__class__', '__contains__', ... 'clear', 'copy', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
Resultado esperado:
Devuelve la lista con los nombres de todos los atributos y métodos del objeto.
Análisis del código:
- Los que comienzan con doble guion bajo
__son atributos/métodos especiales (métodos mágicos). - Los que no llevan doble guion bajo son métodos públicos, como
append,sortetc.
Ejemplo 2: Ver los atributos de una clase personalizada
Ejemplo
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, I'm {self.name}"
# Crear una instancia
p = Person("Tom", 20)
# Ver los atributos de la instancia
print(dir(p))
# Salida: ['__class__', '__delattr__', '__dict__', '__init__', ... 'age', 'greet', 'name']
# Filtrar para mostrar solo métodos no especiales
attrs = [attr for attr in dir(p) if not attr.startswith('_')]
print(attrs) # Salida: ['age', 'greet', 'name']
Resultado esperado:
['__class__', '__delattr__', '__dict__', '__init__', ... 'age', 'greet', 'name'] ['age', 'greet', 'name']
Análisis del código:
__dict__Incluye los atributos de instancia del objeto.- Filtrando
__los métodos que comienzan con doble guion bajo, se obtienen los atributos públicos.
Ejemplo 3: Uso sin parámetros
Ejemplo
print(dir())
# Salida: ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
# Ver después de importar el módulo
import os
print(dir())
# Incluirá 'os' en la lista
# Ver los atributos del módulo
import json
print(dir(json))
# Salida: ['JSONDecodeError', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'tool']
Resultado esperado:
Devuelve la lista de nombres disponibles en el ámbito actual.
dir()Es una herramienta poderosa para explorar objetos y módulos de Python, especialmente adecuada para el aprendizaje interactivo y la depuración.
Funciones integradas de Python3
Otras extensiones