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