dir(object)
list
- список имён (атрибутов) в алфавитном порядке.Функция dir()
, вызванная без аргумента, возвращает список имен в текущей локальной области, а вызванная с аргументом попытается вернуть список допустимых атрибутов для указанного объекта.
Если объект имеет метод с именем __dir__()
, этот метод будет вызван и вернет список атрибутов. Это позволяет объектам, реализующим пользовательскую функцию __getattr__()
или __getattribute__()
, настраивать способ представления своих атрибутов для функции dir().
Если объект не предоставляет метод __dir__()
, то функция делает все возможное, чтобы собрать информацию из атрибута __dict__
объекта, если он определен, и из объекта типа. Результирующий список не обязательно является полным и может быть неточным, если объект имеет пользовательский __getattr__()
.
Механизм dir()
по умолчанию ведет себя по-разному с различными типами объектов, поскольку он пытается создать наиболее релевантную, а не полную информацию:
Функция dir()
в основном используется в интерактивном режиме интерпретатора. Она пытается предоставить интересный набор имен, а не строго определенный набор имен. Ее поведение может изменяться в разных версиях Python.
>>> x = 5 >>> dir() ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'x'] >>> import struct >>> dir() ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'struct', 'x'] >>> dir(struct) ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_clearcache', 'calcsize', 'error', 'iter_unpack', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape: ... def __dir__(self): ... return ['area', 'perimeter', 'location'] >>> s = Shape() >>> dir(s) ['area', 'location', 'perimeter']