Функция dir() в Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Основы «Python»
Комментариев: 0

Функция dir() возвращает список доступных атрибутов для заданного объекта.  Если аргумент не указан, то возвращается список имен из текущей локальной области.

Синтаксис функции: 

dir([object])

Если объект содержит функцию __dir__(), то будет вызвана эта функция. Функция должна возвращать список атрибутов. Имена атрибутов отсортированы в алфавитном порядке.

Рассмотрим примеры:

Пример без ввода аргументов:

print(dir())

Результат: 

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

Пример со списком и кортежем:

num_list = [1, 2, 3, 4]
num_tuple = (1, 2, 3, 4)

print(dir(num_list), dir(num_tuple))

Результат:

['__add__', '__class__', '__class_getitem__', '__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'] ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__
format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

Пример с классом:

class Person:

    def __init__(self, name, age):
        self.name = name
        self.age = age


print(dir(Person))

Результат:

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

Если у объекта есть метод __dir__(), этот метод будет вызван и вернет список атрибутов. Это позволяет объектам, реализующим пользовательскую функцию __getattr__() или __getattribute__(), настраивать способ представления своих атрибутов функции dir().

Если объект не предоставляет метод __dir__(), функция делает все возможное для сбора информации из атрибута __dict__ объекта, если он существует, и из типа object. Результирующий список не обязательно является полным и может быть неточным, если объект имеет пользовательский __getattr__().

Пример с методом __dir__()

class Person:

    def __dir__(self):
        return ['name', 'age']

p = Person()

print(dir(p))

Результат:

['age', 'name']
Теги записи: Python, Основы Python, dir(),
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)