2015-10-23 1 views
-2

У меня есть что-то вродепитона осматривайте определение функции, которые переопределены

def inspection(): 
    inspect.stack() 
    ... 

class A(object): 
    def foo(self): 
     # do stuff 
     inspection() 

class B(A): 
    def foo(self): 
     super(B, self).foo() 
     # do other stuff 
     inspection() 

b = B() 
b.foo()  

Я использую инспектировать модуль для анализа стека внутри обоего реализаций Foo. Я хочу рассказать обо всех этих двух функциях, основываясь на информации, полученной от инспекции.

Я могу получить имя функции (не полезно), и я могу получить объект, но он просто говорит мне, что это экземпляр B в обоих случаях.

+0

Оба случая? Вы только показали один случай. –

+0

Я попытался уточнить, функция inspect() вызывается в обеих реализациях foo(). У меня возникли проблемы, говоря обо всех остальных, используя результат inspect.stack(). Я предполагаю, что есть некоторая ценность, похожая на информацию о стеке, которую я не знаю об этом, было бы полезно ... – chuck1

ответ

0

всего лишь необходимо сделать несколько исследований. в inspect, я нашел Frame.f_code.co_firstlineno, который я могу использовать для однозначной идентификации реализации foo(), в которой я находится.

Смежные вопросы