dir

Nombre completo
dir
Descripción

La función dir devuelve el conjunto de nombres asociados al objeto incluido como argumento. Si no se incluye ningún argumento, devuelve el el conjunto de nombres del ámbito local.

Sintaxis

dir(objeto)

Parámetros
  • objeto: objeto del que obtener los nombres asociados.
Resultado

El resultado de la función dir es una lista de etiquetas de texto.

Ejemplos

Importemos una librería:

import time

Si ejecutamos ahora la función dir, obtenemos el conjunto de nombres asociados a ella:

dir(time)

['_STRUCT_TM_ITEMS',
 '__doc__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'altzone',
 'asctime',
 'ctime',
 'daylight',
 'get_clock_info',
 'gmtime',
 'localtime',
 'mktime',
 'monotonic',
 'monotonic_ns',
 'perf_counter',
 'perf_counter_ns',
 'process_time',
 'process_time_ns',
 'sleep',
 'strftime',
 'strptime',
 'struct_time',
 'thread_time',
 'thread_time_ns',
 'time',
 'time_ns',
 'timezone',
 'tzname']

Esta lista incluye las clases, funciones, atributos, etc. contenidos en la librería. Si utilizamos la función print el resultado de la función se muestra de forma más compacta:

print(dir(time))

['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']

Si pasamos a la función, por ejemplo, el nombre de una variable de cierto tipo, obtenemos los nombres asociados:

a = list([2, 4, 6])
print(dir(a))

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Vemos los métodos asociados a las listas que usamos habitualmente: count, index, insert, remove, etc.

Creemos una clase para ver el resultado de pasar a la función dir un objeto de la clase:

class Circulo:
    
    pi = 3.141592
    
    def __init__(self, radio):
        self.radio = radio
        self.__color = "red"
    
    def area(self):
        return Circulo.pi * (self.radio ** 2)

Hemos incluido un atributo de clase ("pi"), un atributo ("radio"), un atributo privado ("__color") y un método ("area"). Instanciemos ahora la clase en la variable c:

c = Circulo(3)

Y ejecutemos la función dir pasando como argumento la variable:

print(dir(c))

['_Circulo__color', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'area', 'pi', 'radio']

Vemos que el atributo "__color" aparece con un nuevo nombre ("_Circulo__color") para evitar problemas con el mismo atributo de las posibles subclases que se creen (proceso denominado name mangling), y se muestran los atributos "pi" y "radio", y el método "area".

Enviado por admin el Lun, 11/01/2021 - 14:37