Page 53 - 6734
P. 53

import inspect
           # клас A
           class A(): pass
           print inspect.getmro(A) # кортеж з ієрархією базових
           класів
           print inspect.getmembers(A) # повертає список пар
           (ім'я, значення) членів об'єкта
           print inspect.getcomments(A) # коментар перед класом
           A
           #print inspect.getsource(A) # текст вихідного коду
           класу A
           print inspect.isclass(A) # чи A є класом?

           def f(a,b=0,*args,**kwargs):
               cf=inspect.currentframe() # об'єкт поточного
           кадру виконання
               #cf=sys._getframe() # або
               #cf.f_back # попередній кадр стеку (який викликав
           f)
               print cf.f_lineno, cf.f_back.f_lineno # поточний
           рядок коду і рядок, який викликав f
               print cf.f_locals # локальні імена f
               #print cf.f_back.f_code.co_filename # файл
           модуля, що викликав f

           print inspect.ismethod(f) # чи f є методом?
           print inspect.isfunction(f) # чи f є функцією?
           print inspect.getargspec(f) # імена аргументів
           функції
           f(1,2,3,x=4) # виклик функції

           (<class __main__.A at 0x0000000005F61D68>,)
           [('__doc__', None), ('__module__', '__main__')]
           None
           True

                                          52
   48   49   50   51   52   53   54   55   56   57   58