Есть ли функция в Python для перечисления атрибутов и методов определенного объекта?
Что-то вроде:
ShowAttributes ( myObject )
-> .count
-> .size
ShowMethods ( myObject )
-> len
-> parse
Есть ли функция в Python для перечисления атрибутов и методов определенного объекта?
Что-то вроде:
ShowAttributes ( myObject )
-> .count
-> .size
ShowMethods ( myObject )
-> len
-> parse
Вы хотите посмотреть функцию dir()
:
>>> li = []
>>> dir(li)
['append', 'count', 'extend', 'index', 'insert',
'pop', 'remove', 'reverse', 'sort']
li
- это список, поэтомуdir(li)
возвращает список всех методов списка. Обратите внимание, что возвращенный список содержит имена методов как строки, а не сами методы.
Изменить в ответ на комментарий:
Нет, это покажет все унаследованные методы. Рассмотрим этот пример:
test.py:
class Foo:
def foo(): pass
class Bar(Foo):
def bar(): pass
Интерпретатор Python:
>>> from test import Foo, Bar
>>> dir(Foo)
['__doc__', '__module__', 'foo']
>>> dir(Bar)
['__doc__', '__module__', 'bar', 'foo']
Следует отметить, что Документация Python:
Примечание: Поскольку
dir()
поставляется прежде всего в качестве удобства для использования в интерактивная подсказка, она пытается снабдить интересным набором имен больше, чем пытается строго или последовательно заданный набор имен и их подробное поведение может меняться в разных версиях. Для Например, атрибуты метакласса не являются в списке результатов, когда аргумент является классом.
Поэтому он небезопасен для использования в вашем коде. Вместо этого используйте vars()
. vars()
не содержит информации о суперклассах, вы должны сами их собрать.
Если вы используете dir()
для поиска информации в интерактивном интерпретаторе, рассмотрите использование help()
.
Не подходит ли вам dir() и vars()?
и для более удобного для пользователя способом вы можете использовать see:
In [1]: from see import see
In [2]: x = "hello world!"
In [3]: see(x)
Out[3]:
[] in + * % < <= == != > >= hash() help() len()
repr() str() .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()
Еще один способ сделать это - это отличная IPython окружающая среда. Он позволяет вам заполнить вкладку, чтобы найти все методы и поля объекта.
Удивительно, что никто не упомянул о функции объекта python: keys()