Форум сайта python.su
Здраствуйте, мне необходимо провести супер дебагинг сложного класса ( ищу ошибку, которая проскакивает через раз)
В связи с этим встал вопрос, каким образом можно вывести все поля класса, с учетом возможных вложенностей других классов и так далее.
То есть нечто вроде функции dir, только выводить нужно названия элементов, и их содержимое, плюс то же самое для всех вложенных сложных элементов.
Как это можно сделать?
Офлайн
посмотрите в качестве примера otsObjectBrowser
http://www.opentradingsystem.com/TradingPlatform/OTS_Python_Object_Browser_.html
Отредактировано (Апрель 27, 2011 21:06:07)
Офлайн
спасибо, и еще вопрос, правда может немного не по теме
Как можно узнать в pycurl'е, перед отправкой запроса, какие параметры установлены во всех возможных setopt?
Офлайн
И еще вопрос, через dir я могу получить список всех имен переменных, а как узнать их значения?
Офлайн
“а как узнать их значения”
class Tx:
def __init__(self)
self.val_name=2
parent=Tx()
getattr(parent,"val_name")
# или
getattribute(parent,"val_name")
Отредактировано (Апрель 28, 2011 07:27:57)
Офлайн
Что-то вы с *getattribute* напутали… Нет такой буквы!
Офлайн
ок согласен, видел звон но ни ни разу не пользовался :)
“See the __getattribute__() method below for a way to actually get total control in new-style classes”
http://docs.python.org/reference/datamodel.html
наверное obj.__getattribute__(“asdas”)?
Офлайн
Ммм.
На пальцах:
__getattr__ вызывается, если атрибута нет в __dict__ экземпляра (не класса).
__getattribute__ вызывается всегда. Так работают свойства и методы. Перекрытие стандартного поведения позволит делать маленькие чудеса. Ни разу не пришлось применять, если честно, насколько я помню. Но примеры — видел. Если не получилось — вызывается __getattr__.
getattr (без подчерков) вызывает __getattribute__ со всей машинерией, за исключением того что getattr можно передать значение по умолчанию, если машинерия ничего не найдет.
Надеюсь, понятно изложил.
Офлайн
Ок спасибо это будет очень полезно
Офлайн