Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

O que é instanciar um objeto ?

Não consegui compreender claramente o que o professor diz com INSTANCIAR objeto, alguém poderia tentar explicar de alguma maneira diferente ? Desde já, agradeço !

2 respostas
solução!

Olá Gabriel, tudo bem?

Vou tentar descrever oque é instanciar um objeto de uma forma simples pra te ajudar. Vamos lá!

Segundo a documentação doPython, uma classe associa dados (atributos) e operações (métodos) numa só estrutura. Um objeto é uma instância de uma classe. Ou seja, uma representação da classe. Por exemplo, usuario1 é uma instância de uma classe chamada Pessoa, mas a Pessoa é a classe que o representa de uma forma genérica. Se você criar um outro objeto chamado usuario2, esse objeto também será uma instancia da classe Pessoa.

Exemplo 1 - Esse é o exemplo mencionado no começo:

class Pessoa:

    def __init__(self, nome):
        self.nome = nome

    def __str__(self):
        return self.nome

if __name__ == '__main__':

    usuario1 = Pessoa('Gabriel')
    print(usuario1)
    usuario2 = Pessoa('Fábio')
    print(usuario2)

Saida:

>>> Gabriel
>>> Fábio

Note que usuario1 é uma instância da classe Pessoa, e usuario2 é uma outra instância. Ou seja, temos dois objetos: usuario1 e usuario2.

Obs: usamos o if __name__ == '__main__': para testar a nossa aplicação.


Exemplo 2 - Existem pelo menos duas formas diferentes de trabalhar com os parâmetros de entrada. Neste exemplo, definiremos o parâmetro apenas uma vez com um método especial do Python chamado init. Segundo João Reis, este método é chamado quando um objeto de uma classe é instânciado. Este método é útil para fazer qualquer inicialização que você queira com seu objeto, ou seja, ele é o método "Inicializador" da instancia.

#calculadora.py
class Calculadora:

    def __init__(self, param1, param2):
        self.a = param1
        self.b = param2

    def soma(self):
        return self.a + self.b

    def subtrai(self):
        return self.a - self.b

    def multiplica(self):
        return self.a * self.b

    def divide(self):
        return self.a / self.b

Note que definimos dois parâmetros param1 e param2 (dentro do parênteses). E o self.ae self.b é um novo campo.

Como dito antes, definimos os valores iniciais apenas uma vez e depois apenas usamos os métodos para calcular os valores.

Podemos rodar o Python no modo modo interativo pelo terminal e importar a classe (veja este video).

$ python3
>>> from calculadora import Calculadora
>>> c = Calculadora(128,2)
>>> print('Soma:', c.soma())
>>> print('Subtração:', c.subtrai())
>>> print('Multiplicação:', c.multiplica())
>>> print('Divisão:', c.divide())
c = Calculadora(128,2)  # é uma instância da classe com dois valores iniciais.

O resultado é:

>>> Soma: 130
>>> Subtração: 126
>>> Multiplicação: 256
>>> Divisão: 64.0

É isso! Espero que eu tenha te ajudado :)

Muito bom, obrigado