O Parâmetro self
Parte da seção Object Oriented Programming do Journey de Python da Coddy — lição 4 de 64.
O parâmetro self refere-se à instância de uma classe dentro de métodos. Ele permite que você acesse e modifique atributos do objeto atual.
Aqui está um exemplo de uma classe com métodos usando self:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")O parâmetro self deve ser sempre o primeiro parâmetro em definições de métodos. Ele informa ao método qual objeto específico está sendo usado.
Crie um objeto carro e adicione atributos:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"Agora chame os métodos:
my_car.honk()
my_car.describe()Saída:
Beep beep!
I am a Red SedanObserve que ao chamar my_car.describe(), você não passa nada para self - o Python passa automaticamente my_car como o parâmetro self.
Aqui está o que acontece nos bastidores:
# Quando você escreve isto:
my_car.describe()
# O Python na verdade faz isto:
Car.describe(my_car)O parâmetro self permite que cada objeto acesse seus próprios dados. Sem o self, os métodos não saberiam quais atributos de objeto usar.
Ponto Chave: Sempre inclua self como o primeiro parâmetro em definições de métodos, mas nunca o passe ao chamar métodos - o Python lida com isso automaticamente.
Desafio
FácilComplete a classe Car em car.py adicionando um método chamado display_info que usa o parâmetro self para imprimir o ano, marca e modelo do carro no formato:
"This car is a [year] [make] [model]".
car.py: Contém a definição da classeCaronde você adicionará o métododisplay_infodriver.py: Arquivo de execução principal que importa e usa a classeCar
O arquivo driver.py importará sua classe Car e criará instâncias para testar sua implementação. Certifique-se de que seu método funcione corretamente quando chamado a partir do arquivo driver.
Folha de consulta
O parâmetro self refere-se à instância de uma classe dentro de métodos e permite que você acesse e modifique atributos do objeto atual.
self deve ser sempre o primeiro parâmetro nas definições de métodos:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")Crie um objeto e adicione atributos:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"Chame os métodos (o Python passa automaticamente o objeto como self):
my_car.honk() # Beep beep!
my_car.describe() # I am a Red SedanPonto Chave: Sempre inclua self como o primeiro parâmetro nas definições de métodos, mas nunca o passe ao chamar os métodos.
Experimente você mesmo
from car import Car
# Teste seu código
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"
my_car.display_info() # Deve imprimir: Este carro é um Toyota Corolla 2020Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Object Oriented Programming
1Fundamentos de POO
Arquivos ExternosIntrodução à POOClasses vs ObjetosO Parâmetro selfMétodosAtributosMétodo Construtor (__init__)Recapitulação - Calculadora Simples4Herança
Herança BásicaA Função super()Sobrescrita de MétodoHerança MúltiplaOrdem de Resolução de MétodosRecapitulação - Hierarquia de Funcionários7Métodos Especiais
Introdução aos Métodos MágicosSobrecarga de OperadoresMétodos Mágicos de ContêinerRecapitulação - Lista Personalizada10Padrões de Projeto Parte 1
Introdução a Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão ObserverPadrão Strategy2Decoradores
Introdução aos DecoradoresDecorador de PropriedadeDecorador de Método EstáticoDecorador de Método de Classe5Polimorfismo
Sobrescrita de Método RevisitadaDuck TypingClasses e Métodos AbstratosDesign de InterfacesRecapitulação - Calculadora de Formas8Conceitos Avançados de POO
Composição vs HerançaMixinsMétodos Estáticos e de ClasseDecoradores de ClasseGerenciadores de Contexto11Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão Composite3Propriedades de Classe
Variáveis de Instância vs de ClasseDecoradores de PropriedadeAtributos PrivadosRecapitulação - Gerenciador de Conta Bancária6Encapsulamento
Membros Públicos, Protegidos e PrivadosModificadores de AcessoOcultação de InformaçãoProperty Decorators AvançadosRecapitulação - Sistema de Registro de Alunos12Projeto: Gerenciamento de Biblioteca
Visão Geral do ProjetoClasses Livro e Usuário