🎉 SEMANA DO CONSUMIDOR

Últimos dias para comprar os cursos com 50% de desconto

Ver detalhes

Postado em em 5 de novembro de 2024

Você sabe o que é self em Python? Como ele funciona? Para que serve? Aprenda de uma vez o que é o self no Python e como utilizá-lo em seus códigos.

Se quiser pode acompanhar esse conteúdo em formato de vídeo ou pode acessar o nosso Canal do YouTube para mais vídeos!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

O que é Self em Python – Explicação Completa

Quando programamos em Python, um dos conceitos mais importantes para trabalhar com programação orientada a objetos é entender o conceito de self.

Essa palavra-chave é fundamental na estruturação de classes e objetos, pois representa a instância atual da classe, permitindo o acesso a atributos e métodos pertencentes a essa instância.

Nesta aula, você verá detalhadamente como o self funciona, entenderá por que ele é tão importante e como utilizá-lo de forma eficiente.

O que é Self?

Em Python, o termo self é uma convenção usada exclusivamente na construção de classes para referenciar a instância atual de um objeto.

Embora não seja uma palavra-chave reservada, o self é essencial para definir métodos que possam acessar atributos e outras funções da mesma instância.

Dentro da programação orientada a objetos (POO), uma classe é a estrutura que descreve o comportamento e as características que os objetos criados a partir dela terão.

Quando criamos um método dentro de uma classe, o primeiro parâmetro desse método geralmente é a palavra self. Esse parâmetro funciona como um “identificador” que representa a instância do objeto específico ao qual o método está sendo aplicado.

Por meio do self, conseguimos acessar os atributos e métodos da instância atual da classe.

Caso você ainda não entenda o conceito de classes e objetos no Python, recomendo que você veja a aula: Classes no Python – Como Sair do Zero

Uso do Self na Construção da Classe – Exemplo Prático

Vamos visualizar um exemplo prático para ajudar a compreender o uso do self. Imagine que você está criando um sistema de streaming, como o da Netflix.

Nesse sistema, cada filme terá características (atributos) e ações específicas que podem ser executadas (métodos).

Dessa forma, podemos representar um filme como uma classe em Python, onde cada filme terá atributos como título, descrição e o arquivo de vídeo em si, além de métodos para executar funções como assistir ao filme e calcular sua duração.

class Filme():
    def __init__(self, valor_do_titulo, descricao, arquivo_video):
        self.titulo = valor_do_titulo
        self.arquivo_video = arquivo_video
        self.descricao = descricao

    def assistir_filme(self):
        duracao = self.calcular_duracao_filme()
        print("Dar play no arquivo de video", self.arquivo_video, "do filme", self.titulo, "que tem", duracao, "minutos de duração")

    def calcular_duracao_filme(self):
        # comandos para calcular a duração do filme
        return 130

Nesse exemplo, self.titulo, self.arquivo_video e self.descricao são atributos específicos da instância do filme que está sendo criada.

Ao utilizar self, associamos essas características ao objeto individual, permitindo que cada filme tenha suas próprias informações.

Quando utilizamos self.titulo dentro do método assistir_filme, o Python entende que estamos nos referindo ao título específico do filme que será assistido naquele momento.

É importante dizer que é comum que nomes de parâmetros e atributos coincidam. Neste exemplo, temos self.arquivo_video = arquivo_video para associar o parâmetro arquivo_video ao atributo self.arquivo_video.

Isso facilita a leitura e padronização do código. No entanto, você também pode diferenciá-los para evitar confusão, caso sinta necessidade, como fizemos com o atributo self.titulo, que recebe valor_do_titulo como parâmetro.

Self e a Função __init__

A função __init__ é o método especial de inicialização de classes em Python, conhecido como construtor da classe. Ele é executado automaticamente toda vez que uma nova instância da classe é criada.

Dentro dessa função, o self é usado para definir os atributos obrigatórios de cada objeto. No nosso exemplo, isso permite que cada instância da classe Filme armazene informações únicas.

Vamos criar o filme Não Olhe Para Cima, com sua descrição e o nome do arquivo de vídeo.

filme1 = Filme("Não olhe para cima","Filme de meteoros e fim do mundo", "nao_olhe_para_cima.mp4")

Neste caso, ao criarmos o objeto filme1 atribuindo a ele a classe Filme, o Python executa o método __init__ da classe e atribui os valores fornecidos aos atributos self.titulo, self.descricao e self.arquivo_video dessa instância.

Dessa forma, podemos acessar os atributos e métodos referentes ao objeto filme1. Por exemplo, ao executarmos o método filme1.assistir_filme(), o método assistir_filme será chamado para essa instância específica.

Esse método usará o self para acessar o título e o arquivo de vídeo específicos do filme Não Olhe Para Cima e também chamará o método calcular_duracao_filme.

Obs.: Para esse exemplo, estamos utilizando o método calcular_duracao_filme com um valor fixo retornado, mas em um sistema completo, ali seriam desenvolvidos os cálculos de duração para cada filme específico de acordo com as informações fornecidas.

filme1 = Filme("Não olhe para cima","Filme de meteoros e fim do mundo", "nao_olhe_para_cima.mp4")
filme1.assistir_filme()
Self e a Função __init__

Observe que a mensagem exibida no terminal traz as informações conforme definidas no momento de criação do objeto filme1.

Acessando Atributos e Métodos com self

A principal vantagem do self é permitir que os atributos e métodos possam ser chamados de dentro de outros métodos, o que torna o código modular e reutilizável.

Como vimos no caso da função assistir_filme(), que chama o método calcular_duracao_filme() e acessa os atributos arquivo_video e titulo.

Além disso, em Python, os métodos definidos com self no início são chamados de “métodos de instância” e estão disponíveis para todos os objetos criados a partir de uma classe.

Da mesma forma, os atributos desse objeto podem ser acessados e visualizados ao utilizarmos o nome do objeto seguido do nome do atributo que queremos acessar, separados por ponto.

Por exemplo, podemos imprimir o título e a descrição do filme1 dessa forma:

print(filme1.titulo)
print(filme1.descricao)
Acessando Atributos e Métodos com self

Resumo do que é o Self e para que ele serve?

De forma resumida, o termo self refere-se ao objeto atual da classe, permitindo acessar atributos e métodos dentro de uma instância específica.

O uso do self oferece várias vantagens:

  • Acesso consistente aos atributos e métodos da instância;
  • Organização do código, mantendo cada instância independente das demais;
  • Flexibilidade para criar múltiplas instâncias com dados distintos.

Essas características tornam o self um componente essencial na orientação a objetos em Python, permitindo a criação de aplicações robustas e modulares.

Usando self, você aproveita o potencial da programação orientada a objetos em Python para desenvolver classes e métodos que melhoram a organização do código e permitem o desenvolvimento de projetos mais complexos.

Saiba mais em: Programação Orientada a Objetos! Como Funcionam as Classes?

Conclusão – O que é Self em Python – Explicação Completa

O uso do self é essencial na criação de classes em Python, pois permite associar atributos e métodos diretamente à instância atual, tornando o código modular e reutilizável.

Nessa aula, você aprendeu como utilizar o self para acessar e manipular os dados e comportamentos de cada objeto, tornando seu código mais organizado e eficiente.

Ao entender e usar o self, você dominará um dos conceitos fundamentais da programação orientada a objetos em Python, facilitando o desenvolvimento de aplicativos e sistemas complexos.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos

Diego Monutti

Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.