Найти - Пользователи
Полная версия: Супер dir
Начало » Python для новичков » Супер dir
1
Super_BOT
Здраствуйте, мне необходимо провести супер дебагинг сложного класса ( ищу ошибку, которая проскакивает через раз)

В связи с этим встал вопрос, каким образом можно вывести все поля класса, с учетом возможных вложенностей других классов и так далее.

То есть нечто вроде функции dir, только выводить нужно названия элементов, и их содержимое, плюс то же самое для всех вложенных сложных элементов.

Как это можно сделать?
doza_and
посмотрите в качестве примера otsObjectBrowser
http://www.opentradingsystem.com/TradingPlatform/OTS_Python_Object_Browser_.html
Super_BOT
спасибо, и еще вопрос, правда может немного не по теме

Как можно узнать в pycurl'е, перед отправкой запроса, какие параметры установлены во всех возможных setopt?
Super_BOT
И еще вопрос, через dir я могу получить список всех имен переменных, а как узнать их значения?
doza_and
“а как узнать их значения”
class Tx:
def __init__(self)
self.val_name=2
parent=Tx()
getattr(parent,"val_name")
# или
getattribute(parent,"val_name")
К сожалению для для других контейнеров несколько иначе: parent
Андрей Светлов
Что-то вы с *getattribute* напутали… Нет такой буквы!
doza_and
ок согласен, видел звон но ни ни разу не пользовался :)
“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 можно передать значение по умолчанию, если машинерия ничего не найдет.
Надеюсь, понятно изложил.
doza_and
Ок спасибо это будет очень полезно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB