Python

Модул за проверка на Python

Модул за проверка на Python

Общ преглед

Някога чудили ли сте се колко страхотно би било да имате силата да получите изходния код на някой друг модул на Python във вашата собствена програма? Това ще отвори идеи и врати за толкова много възможности като обработка на изходния код на модул, получаване на неговата документация, автоматично изготвяне на документация за парче код. Нека ви кажа, това е 100% възможно с Python's инспектирайте модул.

Модул за проверка на Python

Python инспектирайте модул ни позволява да инспектираме обекти на изпълняваща се програма, да получим изходния код на модул, да получим документацията, свързана с този модул, да прочетем подписа на метода на функция в Python и много други. По този начин можем да изграждаме проекти, които създават документация за кодове на живо за нашите собствени проекти. Това означава, че трябва само да направим необходимите коментари по нашия код на Python и можем да оставим останалата част от работата на самия Python, за да изготви документацията за нас.

Използване на примерен код

За да разберете как Python инспектирайте модул работи, ще използваме една от нашите собствени примерни дефиниции на код в Python, която просто демонстрира наследяване в Python и как се правят обектите. Нека да разгледаме примерния модул, който ще използваме в останалата част от урока тук:

def module_level_function (arg1, arg2 = 'по подразбиране', * args):
"" "Аз съм функция на ниво модул.""
local_var = arg1 * 2
връщане local_var
клас Лице (обект):
"" "Определение за клас Person.""
def __init __ (самостоятелно, име):
себе си.име = име
def get_name (самостоятелно):
"Връща името на екземпляра."
върни себе си.име
person_obj = Лице ('sample_instance')
клас Студент (Лице):
"" "Това е клас" Студент ", дете от клас" Личност ".
""
# Този метод не е част от клас Person.
def do_something_else (самостоятелно):
"" "Всичко може да се направи тук.""
def get_name (самостоятелно):
„Заменя версията от клас Person“
return 'Student (' + self.име + ')'

Дефинирали сме примерен модул, за да можем да започнем да извличаме изходния код и други компоненти от него в следващите примери, които пишем. Да започваме.

Инспектиращ модул

Горният модул Python се записва във файл, наречен linuxhint.py в същата директория, където ще правим новите си Python скриптове. Можем да проверим модул в Python, като първо направим импортиране за него. Това изявление за импортиране ще присъства и във всички скриптове, които пишем в следващите раздели. Ето примерна програма, с която проверяваме нашия модул:

внос инспектира
импортиране на linuxhint
за име, данни в inspect.getmembers (linuxhint):
ако име.започва с('__'):
продължи
print (': !r '.формат (име, данни))

Ето какво получаваме обратно с тази команда:

Модул за проверка на Python


Изходът ни предоставя подробности за това колко класове, функции и обекти съществуват в този модул, когато се изпълнява скриптът.

Проверка на класове в модул

Горният пример, който показахме, представи всички подробности за модул наведнъж. ако искаме да получим само информацията, свързана с класовете в модула, можем да получим същото като:

внос инспектира
импортиране на linuxhint
за ключ, данни в проверка.getmembers (linuxhint, проверете.isclass):
print (': !r '.формат (ключ, данни))

Нека видим изхода за тази команда:

Python проверява клас модул


Резултатът е абсолютно същият, само че този път на конзолата бяха отпечатани само дефинициите на класа.

Проверка на методи в клас

Методите са този, който дефинира поведението на клас в ООП и предоставя информация за това как ще бъде модифицирано поведението на Обекти, когато методите са извикани към тях. Поради тази причина е важно да се документират всички методи, които съществуват в клас или модул. Можем да получим информация, свързана с метод като този:

внос инспектира
от pprint импортиране
импортиране на linuxhint
pprint (проверете.getmembers (linuxhint.Лице, инспектирай.е функция))

Ето какво получаваме обратно с тази команда:

Проверка на метод на клас


Резултатът просто показва дефиницията на метода за всеки присъстващ метод.

Проверка на обекти от клас

Когато се самоанализирате за това колко място е заето, когато стартираме скрипт на Python, важно е да знаете колко обекта за класа са създадени за клас в програма. За да знаем това, можем да получим информация и за Обекти на клас в модул:

внос инспектира
от pprint импортиране
импортиране на linuxhint
човек = linuxhint.Лице (име = 'inspect_getmembers')
pprint (проверете.getmembers (лице, инспектирайте.ismethod))

Нека видим изхода за тази команда:

Инспектиране на обекти от класа


Това също отпечатва адреса на паметта, където този обект живее по време на тази програма.

Проверка на Docstring на клас

Докстрингът на модул е ​​частта, която всъщност информира потребител или разработчик, за какво става дума в този модул и какви функции предлага той. С модула за проверка можем да получим документацията на пълен модул, за да го документираме по-добре. Нека видим как можем да извлечем docstring за клас:

внос инспектира
импортиране на linuxhint
print ('Лице.__doc__: ')
печат (linuxhint.Личност.__doc__)
печат ()
print ('getdoc (Person):')
печат (инспектиране.getdoc (linuxhint.Лице))

Ето какво получаваме обратно с тази команда:

Получаване на Docstring за клас

Проверка на източника на клас

И накрая, можем да видим как можем да извлечем пълен изходен код на клас и в програма на Python. Това е важна характеристика, както и това ни помага да изградим инструменти за документация за модул Python. Нека да видим пример в действие:

внос инспектира
импортиране на linuxhint
печат (инспектиране.getource (linuxhint.Студент))

Ето какво получаваме обратно с тази команда:

Получаване на изходния код на класа

Проверка на източника на метод

По същия начин, по който извличаме изходния код на клас, сега ще извлечем изходния код на метод в нашата програма Python:

внос инспектира
импортиране на linuxhint
печат (инспектиране.getource (linuxhint.Студент.get_name))

Ето какво получаваме обратно с тази команда:

Получаване на източник на метод в клас

Подпис на метода за проверка

Подписът на метод предоставя задълбочена представа за това какво прави методът и какъв вход е необходим. Предоставя ни правомощието да документираме по-добре метод, тъй като документацията на даден метод е непълна, без да знаем какъв вход е необходим. Ето как можем да извлечем информацията, свързана с подпис на метод:

внос инспектира
импортиране на linuxhint
печат (инспектиране.подпис (linuxhint.модул_ниво_функция))

Ето какво получаваме обратно с тази команда:

Получаване на подпис на метод

Заключение

В този урок разгледахме как можем да използваме модула за проверка на Python, за да разгледаме изходния код и много други вътрешни характеристики на програма на Python. Прочетете повече публикации на базата на Python тук.

SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...
Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...
0 А.д. Урок
От многото стратегически игри, 0 A.д. успява да се открои като изчерпателно заглавие и много дълбока, тактическа игра, въпреки че е с отворен код. Раз...