O que é Self em Python – Explicação Completa
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!
O que você aprende neste vídeo
Resposta rápida: No exemplo de um site da Netflix, com uma classe de filmes, a aula mostra o self nos métodos, para chamá-los a partir do filme criado e de dentro de outro método, e nos atributos, guardando no __init__ os valores recebidos para usá-los em qualquer método. Classes em profundidade ficam para outro vídeo do canal.
Neste vídeo (24 min):
- 1:00 - Monta o exemplo de um site da Netflix: a classe de filmes tem atributos, as informações do filme (título, descrição, arquivo de vídeo), e métodos, as ações do usuário com ele (dar play, pausar, ver o trailer).
- 2:49 - Põe um
printno__init__, cria um filme, uma instância da classe, e a mensagem aparece sem nenhuma chamada ao__init__. - 2:59 - Explica que
self, em inglês, é algo como você mesmo, e avisa que ele só aparece dentro da construção da classe, para se referir ao próprio filme que está sendo criado. - 4:11 - Cria o método de assistir ao filme, que por enquanto só imprime uma mensagem de play, com o
selfentre os parênteses: todo filme criado passa a ter esse método. - 5:21 - Chamado sozinho, fora do filme, o método dá erro de função não definida; chamado a partir do filme criado, roda e mostra a mensagem de play.
- 6:49 - Cria um método que calcula a duração (130 minutos, um número que ele inventa para o exemplo) e o chama dentro do método de assistir, com
self.na frente. - 9:30 - Passa ao
__init__o título, a descrição e o arquivo de vídeo como parâmetros: daí em diante, criar um filme exige essas três informações. - 13:19 - Mostra o problema: o título e o arquivo de vídeo chegaram no
__init__, e o método de assistir não os tem, a não ser que o usuário os passe de novo. - 14:28 - No
__init__, guarda os três valores como atributos do filme, comself.na frente do nome. - 16:56 - No método de assistir, troca as variáveis pelos atributos, e a mensagem de play sai com o arquivo e o título do filme.
- 19:29 - Fora da classe, lê o título direto do filme criado (o objeto, ponto, título) e recebe Não Olhe para Cima.
- 19:55 - Troca a descrição guardada por um texto fixo e mostra que é ele que aparece, mesmo com outra descrição passada na criação do filme.
Trechos do vídeo:
- Ao criar o objeto, o
selfnão é passado: entram só os valores que vêm depois dele no__init__, na ordem ou pelo nome de cada parâmetro, como numa função comum. - Na linha em que o atributo recebe o parâmetro de mesmo nome, os dois são coisas diferentes: o nome com
self.é o atributo do objeto, e o nome sozinho é o valor que chegou na criação. Usar o mesmo nome nos dois é costume, e não obrigação. - Dentro da classe, um método chama outro com
self.na frente. Sem ele, o método não é reconhecido, e uma função de mesmo nome definida fora da classe seria outra função, e não o método da classe. - Os atributos definidos no
__init__ficam disponíveis em qualquer outro método da classe, porque o__init__roda no momento em que o objeto é criado, antes de qualquer método ser chamado nele.
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 self é o parâmetro que representa a instância atual dentro dos métodos de uma classe em Python. Ele é sempre o primeiro parâmetro do método, e é por ele que se lê e se grava os atributos daquele objeto, como em self.titulo. O self não é palavra reservada: o nome é convenção, e o Python o preenche sozinho quando você chama o método a partir do objeto.
O que você vai ver hoje?
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 130Nesse 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()
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)
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.
Perguntas frequentes
1. O self é uma palavra reservada do Python?
Não. O self é uma convenção da comunidade: o primeiro parâmetro poderia ter qualquer nome válido e o código funcionaria igual. Como praticamente todo mundo usa self, fugir dessa convenção só dificulta a leitura do seu código por outras pessoas.
2. Por que preciso escrever self em todo método da classe?
Porque é assim que o Python entrega ao método o objeto sobre o qual ele foi chamado. Quando você escreve filme1.assistir_filme(), o Python executa Filme.assistir_filme(filme1) nos bastidores, e o filme1 chega no parâmetro self.
3. Qual a diferença entre self.titulo e titulo dentro de um método?
self.titulo é um atributo do objeto e continua existindo depois que o método termina, acessível de qualquer outro método da classe. Já o titulo sozinho é uma variável local: existe apenas durante a execução daquele método e se perde no fim dele.
4. O que acontece se eu esquecer o self na definição do método?
O Python levanta um TypeError avisando que o método recebeu um argumento a mais do que o esperado. Isso acontece porque ele passa a instância de qualquer forma, e não existe parâmetro definido para recebê-la.
Hashtag Treinamentos
Para acessar outras publicações de Python, clique aqui!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








