Función dir() de Python

Python3 内置函数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

# Ver todos los atributos y métodos de la lista
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:

  1. Los que comienzan con doble guion bajo__son atributos/métodos especiales (métodos mágicos).
  2. Los que no llevan doble guion bajo son métodos públicos, comoappend, sortetc.

Ejemplo 2: Ver los atributos de una clase personalizada

Ejemplo

class Person:
    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

# Sin parámetros, devuelve la lista de nombres del ámbito actual
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.


Python3 内置函数Funciones integradas de Python3


Otras extensiones