this (programação de computadores)

this, self e Me são palavras-chave usadas em algumas linguagens de programação de computador para se referir ao objeto, classe ou outra entidade da qual o código atualmente em execução faz parte. A entidade referida por essas palavras-chave depende, portanto, do contexto de execução (por exemplo, qual objeto está tendo seu método chamado). Diferentes linguagens de programação usam essas palavras-chave de maneiras, ligeiramente, diferentes. Em linguagens onde uma palavra-chave como "this" é obrigatória, a palavra-chave é a única forma de acessar dados e métodos armazenados no objeto atual. Onde for opcional, eles podem eliminar a ambiguidade de variáveis e funções com o mesmo nome.

Implementações editar

PowerShell editar

No PowerShell, a variável automática especial $_ contém o objeto atual no objeto de pipeline. Você pode usar essa variável em comandos que executam uma ação em cada objeto ou em objetos selecionados em um pipeline.[1]

"um", "dois", "três" | % { write $_ }

Da mesma forma, começando com PowerShell 5.0, que adiciona uma sintaxe formal para definir classes e outros tipos definidos pelo usuário,[2] a variável $this descreve a instância atual do objeto.

Python editar

Em Python, não existe uma palavra-chave para this. Quando uma função membro é chamada em um objeto, ele chama a função membro com o mesmo nome no objeto de classe do objeto, com o objeto automaticamente vinculado ao primeiro argumento da função. Assim, o primeiro parâmetro obrigatório dos métodos de instância serve como this. Este parâmetro é, convencionalmente, denominado self, mas pode ser denominado qualquer coisa.

Desta forma, o parâmetro self é usado para representar a instância da classe. Com ele você pode acessar os atributos e métodos da classe em python, pois ele vincula os atributos aos argumentos fornecidos. Em Python, temos métodos que fazem com que a instância seja passada automaticamente, mas não recebida automaticamente.[3]

Exemplo:

class automovel():
    # método init ou construtor
    def __init__(self, carro, cor):
        self.carro = carro
        self.cor = cor
    
    def exibir(self):
        print("O carro é", self.carro)
        print("Sua cor é", self.cor)
        
fusca = automovel("fusca", "amarelo")
gol = automovel("gol", "azul")

fusca.exibir()
gol.exibir()

Em métodos de classe (criados com o decorador classmethod), o primeiro argumento se refere ao próprio objeto de classe e é, convencionalmente, chamado de cls; estes são usados principalmente para construtores herdáveis,[4] onde o uso da classe como um parâmetro permite subclassificar o construtor. Em métodos estáticos (criados com o decorador staticmethod), não existe primeiro argumento especial.

Referências

  1. msdn. «PowerShell: About Automatic Variables». docs.microsoft.com (em inglês). Consultado em 22 de março de 2018 
  2. msdn. «about_Classes». docs.microsoft.com (em inglês). Consultado em 17 de dezembro de 2018 
  3. «What is the use of self in Python?». edureka!. 7 de maio de 2020. Consultado em 28 de agosto de 2020 
  4. Unifying types and classes in Python 2.2, Guido van Rossum, "Overriding the __new__ method"