Как список каждый пункт директора (объект)?

У Питона, чтобы найти все признаки, есть:

dir(object)

object.__dict__.keys()

Но то, что я хочу, должно перечислить то, что находится во втором отделении, не только первом отделении, это - своего рода рекурсивная операция?

Как сделать это?

это похоже

dir(dir(x) for x in dir(math))

попробованный это и все еще дублировали тот же самый результат:

>>> for i in dir(math):
...     for j in i:
...         print dir(j)

and all results are the methods of str

Update: it seems that the dir() commande returns a list of str, here is a simple hack; I tried to exclude the reserved names to see if i go further, but the result was only str

[i for i in dir(math) if i[0]!="_"]

[type(i) for i in dir(math) if i[0]!="_"]

Еще раз спасибо:)

0
nl ja de
сделайте директора() для каждого метода в этом объекте
добавлено автор Abdelouahab Pp, источник
@MartijnPieters это то, потому что наследование? inspectorG4dget не понимают?
добавлено автор Abdelouahab Pp, источник
@MartijnPieters, таким образом, это - то, почему он просматривает только первое отделение?
добавлено автор Abdelouahab Pp, источник
я думал, что это похоже на iterator, который останавливается после нахождения ошибки.
добавлено автор Abdelouahab Pp, источник
@Lattyware так я guss там является ничем, чтобы поднять эту ошибку остановить рекурсию!
добавлено автор Abdelouahab Pp, источник
Я думаю, что у вас может быть проблема XY здесь. Вы уверены , Вар не больше вроде того, в чем вы нуждаетесь?
добавлено автор inspectorG4dget, источник
@AbdelouahabPp: директор() перечисляет названия атрибута только. Если вы хотите присваиваемые значения также, используйте Вар() . Но никакой метод не перечислит названия атрибута и ценности рекурсивно, нет.
добавлено автор Martijn Pieters, источник
@AbdelouahabPp: <�кодовый> директор() перечисляет признаки, многие из которых являются методами. У методов есть методы, у которых есть те же самые методы, до бесконечности. It' s как мир сверху черепахи. Оттуда it' s turtles all the way down.
добавлено автор Martijn Pieters, источник
@AbdelouahabPp: Вы поразите ошибку бесконечной рекурсии. It' s возражает полностью вниз.
добавлено автор Martijn Pieters, источник
Iterators не останавливаются на исключениях, только на StopIteration , который специально предназначен для той роли.
добавлено автор Gareth Latty, источник
' список, что находится во втором branch' - что вы подразумеваете под отделением здесь?
добавлено автор Gareth Latty, источник

1 ответы

object.__dict__.keys()   # Just keys
object.__dict__.values() # Just values
object.__dict__.items()  # Key-value pairs

Edit wait! I think I misunderstood. You want to list an object's properties, and those properties' properties and so on and so forth? Try something like this:

def discover(object):
    for key in dir(object):
        value = getattr(object, key)
        print key, value
        discover(value)

Это довольно сыро, но это - рекурсия, я думаю, что вы ищете. Обратите внимание, что необходимо будет остановить его вручную в какой-то момент. Нет никаких черепах в основании, оно продолжается и на.

2
добавлено
таким образом, я беру этот ответ, так как это не возможно, i' ll обновляют вопрос, показывающий другую проблему
добавлено автор Abdelouahab Pp, источник
на окнах кажется, что это достигает макс. глубины быстро! я получаю ошибку: RuntimeError: максимальная глубина рекурсии превысила, называя объект Пайтона
добавлено автор Abdelouahab Pp, источник
почему я получаю ошибки? AttributeError: ' builtin_function_or_method' у объекта нет признака ' dict '
добавлено автор Abdelouahab Pp, источник
i' ll пробуют это прямо сейчас: D
добавлено автор Abdelouahab Pp, источник
Я думаю, что необходимо отправить другой вопрос и дать это закрытие
добавлено автор slezica, источник
What' s "быстро"? Вовремя или в шагах? It' s поиск в глубину , это поразит предел прежде, чем сделать что-либо полезное:) как я сказал, it' s сырой пример
добавлено автор slezica, источник
Я изменил пример, чтобы использовать директора()
добавлено автор slezica, источник
Это - одна причина использовать директора() и , Вар() или осматривает </ код> вручную получающий доступ __ dict __ . Ошибка происходит потому что встроенные функции don' t имеют __ dict __ .
добавлено автор Gareth Latty, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community