Visão geral
Já se perguntou o quão legal seria ter o poder de realmente obter o código -fonte de algum outro módulo Python em seu próprio programa? Isso abrirá idéias e portas para tantas oportunidades, como processar o código -fonte de um módulo, obtendo sua documentação, produzindo documentação para um pedaço de código automaticamente. Deixe -me dizer, isso é 100% possível com o Python inspecionar módulo.
Módulo Python Inspect
Pitão inspecionar O módulo nos permite inspecionar objetos de um programa em execução, obtenha o código -fonte de um módulo, obtenha o documento associado a esse módulo, leia a assinatura do método de uma função no Python e muito mais. Dessa forma, podemos criar projetos que produzem documentação de código ao vivo para nossos próprios projetos. Isso significa que só precisamos fazer os comentários necessários em nosso código Python e podemos deixar o resto do trabalho para produzir a própria documentação para nós.
Usando o código de amostra
Para entender como o Python inspecionar Módulo funciona, usaremos uma de nossa própria definição de código de amostra em python, que apenas demonstra herança no python e como os objetos são feitos. Vejamos o módulo de amostra que usaremos no restante do tutorial aqui:
def module_level_function (arg1, arg2 = 'padrão', *args):
"" "Eu sou uma função no nível do módulo."" "
local_var = arg1 * 2
Retornar local_var
Pessoa de classe (objeto):
Definição "" "para classe de pessoa."" "
def __init __ (self, nome):
auto.nome = nome
def get_name (self):
"Retorna o nome da instância."
retornar a si mesmo.nome
Person_obj = Pessoa ('Sample_instance')
Aluno da turma (pessoa):
"" "Esta é a aula de estudante, aula de criança.
"" "
# Este método não faz parte da classe de pessoa.
def do_something_else (self):
"" "Tudo pode ser feito aqui."" "
def get_name (self):
"Substitua a versão da classe Pessoa"
Retornar 'aluno (' + self.nome + ')' '
Definimos um módulo de amostra para que possamos começar a extrair o código -fonte e outros componentes dele em exemplos posteriores que escrevemos. Vamos começar.
Módulo de inspeção
O módulo Python acima é salvo em um arquivo chamado Linuxhint.py No mesmo diretório em que faremos nossos novos scripts Python. Podemos inspecionar um módulo em Python, primeiro, imponente para isso. Esta declaração de importação estará presente em todos os scripts que escrevemos em seções posteriores também. Aqui está um programa de amostra com o qual inspecionamos nosso módulo:
Importar inspecionar
importar linuxhint
para nome, dados no inspecionamento.getMembers (Linuxhint):
se nome.começa com('__'):
continuar
imprimir(' : !r '.formato (nome, dados))
Aqui está o que recebemos com este comando:
Módulo Python Inspect
Inspecionando aulas em um módulo
O exemplo acima que mostramos apresentou todos os detalhes de um módulo de uma só vez. Se queremos obter apenas as informações relacionadas às classes do módulo, podemos obter o mesmo que:
Importar inspecionar
importar linuxhint
Para chave, dados no inspecionar.getMembers (Linuxhint, inspecionar.isclass):
imprimir(' : !r '.formato (chave, dados))
Vamos ver a saída para este comando:
Python Inspect Module Class
Inspecionando métodos em uma classe
Os métodos são os que define o comportamento de uma classe em OOPS e fornecem informações sobre como o comportamento de um objeto será modificado à medida que os métodos são chamados sobre eles. É devido a esse motivo que é importante documentar todos os métodos que existem em uma classe ou módulo. Podemos obter informações relacionadas a um método como este:
Importar inspecionar
De Pprint Import Pprint
importar linuxhint
pprint (inspecionar.GetMembers (Linuxhint.Pessoa, inspecionar.isfunção)))
Aqui está o que recebemos com este comando:
Inspecionar um método de classe
Inspecionar objetos de uma classe
Quando você introspecta sobre quanto espaço está ocupado quando executamos um script python, é importante saber quantos objetos para a classe são instantados para a classe em um programa. Para saber disso, também podemos obter informações sobre objetos de uma classe em um módulo:
Importar inspecionar
De Pprint Import Pprint
importar linuxhint
pessoa = linuxhint.Pessoa (nome = 'inspect_getmembers')
pprint (inspecionar.getMembers (pessoa, inspecionar.ismethod))
Vamos ver a saída para este comando:
Inspecionando objetos de classe
Inspecionar documentos de uma classe
O documento de um módulo é a parte que realmente informa a um usuário ou desenvolvedor sobre o que esse módulo é e quais recursos ele fornece. Com o módulo de inspeção, podemos obter o documento de um módulo completo para documentá -lo melhor. Vamos ver como podemos extrair Docstring para uma aula:
Importar inspecionar
importar linuxhint
impressão ('pessoa.__doc__: ')
Imprimir (Linuxhint.Pessoa.__doc__)
imprimir()
Print ('getDoc (pessoa):')
Imprimir (inspecionar.getDoc (Linuxhint.Pessoa))
Aqui está o que recebemos com este comando:
Obtendo Docstring para a aula
Inspecionando a fonte de uma classe
Finalmente, podemos ver como podemos extrair o código -fonte completo de uma classe em um programa Python também. Esse é um recurso importante, bem como isso nos ajuda a criar ferramentas de documentação sobre um módulo Python. Vamos ver um exemplo em ação:
Importar inspecionar
importar linuxhint
Imprimir (inspecionar.getSource (Linuxhint.Estudante))
Aqui está o que recebemos com este comando:
Obtendo código -fonte de classe
Inspecionando a fonte de um método
Da mesma forma que extraímos o código -fonte de uma classe, agora extraímos o código -fonte de um método em nosso programa Python:
Importar inspecionar
importar linuxhint
Imprimir (inspecionar.getSource (Linuxhint.Estudante.get_name))
Aqui está o que recebemos com este comando:
Obtendo fonte de método em uma classe
Inspeção da assinatura do método
A assinatura de um método fornece uma visão profunda sobre o que um método faz e que entrada é necessária. Ele nos fornece o poder de documentar melhor um método, porque a documentação de um método está incompleta sem saber qual a entrada. Aqui está como podemos extrair as informações relacionadas a uma assinatura do método:
Importar inspecionar
importar linuxhint
Imprimir (inspecionar.Assinatura (Linuxhint.module_level_function))
Aqui está o que recebemos com este comando:
Obtendo assinatura de um método
Conclusão
Nesta lição, analisamos como podemos usar o módulo Python Inspect para analisar o código -fonte e muitos outros recursos internos de um programa Python. Leia mais postagens baseadas em Python aqui.