Ниже показано, как traceback.extract_stack () работает при вызове из метода __init__
класса. Пожалуйста, оставьте свой код, показывающий, что он не работает. Включите версию Python. Не печатайте по памяти; используйте копирование / вставку, как я сделал.
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import traceback as tb
>>> tb.extract_stack()
[('<stdin>', 1, '<module>', None)]
>>> def func():
... print tb.extract_stack()
...
>>> func()
[('<stdin>', 1, '<module>', None), ('<stdin>', 2, 'func', None)]
>>> class Klass(object):
... def __init__(self):
... print tb.extract_stack()
...
>>> k = Klass()
[('<stdin>', 1, '<module>', None), ('<stdin>', 3, '__init__', None)]
>>>
ОБНОВЛЕНИЕ Вместо того, чтобы смотреть return a.lib.htmlencode(traceback.extract_stack())
и задаться вопросом, нажмите на конвейер:
(1) выполните tb_stack = repr((traceback.extract_stack())
и запишите результат в свой лог-файл для проверки
(2) выполните return a.lib.htmlencode(some_known_constant_data)
и убедитесь, что известные данные правильно отображаются там, где вы ожидаете их увидеть.