Для исследовательских целей я хотел бы получить человекочитаемое дерево объектов.
К сожалению, в ООП я не силен, в Питоне тем более, поэтому заранее прошу ногами не пинать, если где сморожу глупость.
В общем, имеем один “корневой” объект, скажем, “А”, у которого много-много свойств и методов.
Хотелось бы написать процедуру функцию, которая бы вывела структуру этого объекта в тесктовый файл.
Например, допустим, у этого “А” есть методы method1, method2, method3, и свойства prop1, prop2, prop3, prop4.
Задача: получить вывод вроде
A object of type Aobject
A.method1 function
A.method2 function
A.method3 function
A.prop1 integer
A.prop2 string
A.prop3 object of type Bobject
A.B.method1 function
A.B.method2 function
A.B.prop1 string
...
end of tree
если у свойства propX есть __dict__, то к нему тоже применить ту же написанную функцию/процедуру, так?
Самая заковыка - некоторые свойства объявляются через proxy (этого механизма я пока не понимаю), и еще некоторые имеют отсылку к объекту-родителю. Поэтому, если тупо применять рекурсивно функцию ко всем подряд свойствам, гарантированно получим бесконечную рекурсию. Как бы этого избежать?
в общем и целом, задача похожа на обход элементов HTML страницы, с выводом путей до каждого элемента в виде Xpath. Только тут вовсе не HTML.
Заранее благодарен за прототип кода функции :)