Python dir: как использовать функцию для работы с атрибутами и методами объектов в Python?
В Python функция dir() используется для получения списка всех идентификаторов, которые определены в текущем пространстве имен. Это могут быть функции, переменные, объекты, модули и другие идентификаторы.
Например, если мы запустим dir() без аргументов в интерактивной оболочке Python, то получим список всех встроенных идентификаторов:
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
В этом списке мы можем видеть идентификаторы, такие как `__builtins__`, `__doc__` и `__name__`, которые являются встроенными для Python.
Если мы хотим получить список идентификаторов внутри определенного объекта или модуля, то мы можем передать этот объект в качестве аргумента функции dir(). Например, если у нас есть модуль example.py с определенными функциями и переменными, мы можем использовать dir() для получения списка этих идентификаторов:
# example.py
def foo():
pass
def bar():
pass
x = 42
y = "hello"
# main.py
import example
print(dir(example))
Результат будет следующим:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'bar', 'foo', 'x', 'y']
Здесь мы видим идентификаторы, такие как `foo`, `bar`, `x` и `y`, которые были определены в модуле example.py.
Еще одним применением функции dir() является использование ее с объектами, чтобы получить список всех атрибутов или методов, которые определены в этом объекте. Например, мы можем использовать dir() для получения списка всех методов, которые определены в объекте списка:
my_list = [1, 2, 3]
print(dir(my_list))
Результат будет следующим:
['__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']
Здесь мы видим список всех методов, определенных в объекте списка, такие как `append`, `count`, `extend` и другие.
В целом, функция dir() очень полезная для получения информации об идентификаторах, которые определены в текущем пространстве имен или внутри конкретного объекта. Это может быть очень удобно при отладке или при работе с неизвестными объектами или библиотеками.