7

Как узнать, какие методы имеет объект в Python

27

У меня есть объект в Python любого типа, и мне нужно получить список всех методов, которые этот объект имеет. Есть ли простой способ сделать это?

Если это невозможно, существует ли хотя бы простой способ проверить, имеет ли объект определённый метод, кроме как вызывать метод и обрабатывать возможную ошибку?

5 ответ(ов)

1

Самый простой способ — использовать dir(objectname). Эта команда отобразит все методы, доступные для этого объекта.

0

Я полагаю, что вы хотите что-то вроде этого:

Список атрибутов объекта

Встроенная функция dir() может помочь в этом.

Из вывода help(dir) в вашем Python-терминале:

dir(...)

dir([object]) -> список строк

Если вызвана без аргумента, возвращает имена в текущей области видимости.

В противном случае возвращает алфавитный список имен, которые составляют (некоторые из) атрибутов данного объекта и атрибутов, доступных из него.

Если объект предоставляет метод с именем __dir__, он будет использован; в противном случае будет использоваться логика по умолчанию для dir(), которая возвращает:

  • для модуля: атрибуты модуля.
  • для объекта класса: его атрибуты, а также рекурсивно атрибуты его базовых классов.
  • для любого другого объекта: его атрибуты, атрибуты его класса и рекурсивно атрибуты базовых классов его класса.

Например:

$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] на linux2
Введите "help", "copyright", "credits" или "license" для получения дополнительной информации.

>>> a = "Я строка"
>>>
>>> type(a)
<class 'str'>
>>>
>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
'__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__',
'__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'_formatter_field_name_split', '_formatter_parser', 'capitalize',
'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find',
'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition',
'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip',
'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']
0

Чтобы проверить, есть ли у объекта определённый метод, вы можете использовать функцию hasattr. Пример использования:

hasattr(object, "method")

Эта функция вернёт True, если метод существует, и False в противном случае.

0

Самый простой способ получить список методов любого объекта — использовать команду help().

help(object)

Это выведет все доступные и важные методы, связанные с этим объектом.

Например:

help(str)
0

Чтобы открыть Bash-оболочку в Ubuntu, вы можете использовать сочетание клавиш Ctrl + Alt + T. После этого запустите оболочку Python 3, просто введя команду python3 и нажав Enter.

Когда вы находитесь в оболочке Python, создайте объект, например, строку:

import readline
readline.parse_and_bind("tab: complete")  # Активируем автодополнение
s = "Любой объект. Теперь это строка"

Теперь, если вы просто добавите точку после объекта s и нажмете Tab дважды, вы увидите список доступных методов и атрибутов для вашего объекта. Это может выглядеть примерно так:

s.__add__(           s.__rmod__(          s.istitle(
s.__class__(         s.__rmul__(          s.isupper(
s.__contains__(      s.__setattr__(       s.join(
...
s.isprintable(

Таким образом, вы сможете увидеть все методы, доступные для строкового объекта в Python. Это очень полезно для изучения возможностей языка и объектно-ориентированного программирования в Python.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь