Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

x1', 'y1'], ['x2', 'y2']], None, None, None)

Поиск

([['x1', 'y1'], ['x2', 'y2']], None, None, None)

 

Классы(как вы помните) -тоже объекты,и о них можно кое-что узнать:

 

>>> import smtplib

>>> s = smtplib.SMTP

>>> s.__module__ # модуль, в котором был определен объект

'smtplib'

>>> inspect.getmodule(s) # можно догадаться о происхождении

объекта

 

<module 'smtplib' from '/usr/local/lib/python2.3/smtplib.pyc'>

 

Для визуализации дерева классов может быть полезна функция inspect.getclasstree().

 

Она возвращает иерархически выстроенный в соответствии с наследованием список вложенных списков классов,указанных в списке-параметре.В следующем примере на основе списка всех встроенных классов-исключений создается дерево их зависимостей по наследованию:

 

import inspect, exceptions

 

def formattree(tree, level=0):

 

"""Вывод дерева наследований.

tree - дерево, подготовленное с помощью inspect.getclasstree(),

 

которое представлено списком вложенных списков и кортежей.


 


В кортеже entry первый элемент - класс, а второй - кортеж с

 

его

 

базовыми классами. Иначе entry - вложенный список. level - уровень отступов

 

"""

for entry in tree:

 

if type(entry) is type(()): c, bases = entry

print level * " ", c.__name__, \

"(" + ", ".join([b.__name__ for b in bases]) + ")" elif type(entry) is type([]):

 

formattree(entry, level+1)

 

v = exceptions.__dict__.values() exc_list = [e for e in v

 

if inspect.isclass(e) and issubclass(e, Exception)]

 

formattree(inspect.getclasstree(exc_list))

 

С помощью функции inspect.currentframe() можно получить текущий фрейм исполнения.Атрибуты фрейма исполнения дают информацию о блоке кода,исполняющегося в точке вызова метода.При вызове функции(и в некоторых других ситуациях)на стек кладется соответствующий этому фрейму блок кода.При возврате из функции текущим становится фрейм,хранившийся в стеке.Фрейм содержит контекст выполнения кода:пространства имен и некоторые другие данные.Получить эти данные можно через атрибуты фреймового объекта:

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 15; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.166.45 (0.006 с.)