Aula 14 – Python – Pacotes – Packages
Pacotes ou python packages
Que fazer esse curso com certificação?
Acesse:
https://workover.com.br/python-codigo-fluente
Voltar para página principal do blog
Todas as aulas desse curso
Aula 13 Aula 15
Na aula passada vimos o que são módulos.
Segundo a documentação, um módulo consiste de um único arquivo.
Antes de começar pra valer, quero deixar meu link de afiliados na Hostinger, tá valendo a pena, dêem uma olhada: Hostinger
Dêem um joinha 👍 na página do Código Fluente no Facebook
Facebook
Meu link de referidos na digitalocean pra vocês.
Quem se cadastrar por esse link, ganha $100.00 dólares de crédito na digitalocean:
Digital Ocean
Esse outro é da one.com:
One.com
Automatize tarefas do dia a dia com python:
Agora vamos entender o que são pacotes.
Pacotes são módulos também. Eles são apenas embalados de forma diferente.
Eles são formados pela combinação de um diretório mais o arquivo __init__.py.
Eles são módulos que podem conter outros módulos, isto é, uma coleção de módulos em diretórios que fornecem uma hierarquia de pacotes.
Em sua definição precisa, um módulo é um objeto na memória de um interpretador Python, geralmente criado pela leitura de um ou mais arquivos no disco.
Módulos e Pacotes é a maneira do Python organizar e estruturar códigos.
Um pacote é uma coleção de módulos em uma pasta. O nome do pacote é o nome da pasta.
Pacotes são identificados pelo interpretador pela presença de um arquivo com o nome “__init__.py“.
O arquivo “__init__.py” pode ser vazio ou conter algum código de inicialização do pacote ou definir uma variável chamada __all__, com uma lista de módulos do pacote que serão importados quando for usado “*“.
Sem o arquivo __init__.py, o Python não identifica a pasta como um pacote válido.
Os dois __init__.py do exemplo dessa aula são arquivos vazios, tanto o do pacote ecommerce como o do pacote payments.
Veja abaixo a seguinte estrutura de pastas:
parent_directory/ main.py ecommerce/ __init__.py database.py products.py payments/ __init__.py paypal.py authorizenet.py
Crie esses arquivos nessa hierarquia de pastas: parent_directory/main.py
"""Módulo principal.
"""
import ecommerce.products
from ecommerce.payments.paypal import PayPal
def main():
"""Função principal da aplicação.
"""
product = ecommerce.products.Product()
print(product)
PayPal()
if __name__ == "__main__":
main()
parent_directory/ecommerce/products.py
#Um ponto só no import, porque o database.py tá na mesma pasta
from .database import Database
class Product:
'''Essa é a classe produto'''
database = Database()
if database:
print("Eu importei um database")
def __str__(self):
return str("Eu sou um produto!")
parent_directory/ecommerce/database.py
class Database: # the database implementation
def __str__(self):
return str("Eu sou um database!")
database = None
def initialize_database():
global database
database = Database()
Nós adiamos a criação do banco de dados até que seja realmente necessário chamando a função initialize_database para criar a variável do módulo database.
parent_directory/ecommerce/payments/authorizenet.py
class Authorizenet:
'''Essa é a classe Authorizenet'''
pass
parent_directory/ecommerce/payments/paypal.py
from ..database import Database
class PayPal:
'''Essa é a classe PayPal'''
database = Database()
if database:
print("Eu sou o paypal do módulo payments, eu importei e instanciei um database")
O uso do comando pass é apenas para não precisar definir uma classse ou função, como aqui são apenas exemplos, não queremos que o python reclame pelo fato de definir uma classe ou função e não fazer nada dentro delas.