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

__init__ da Class sem todos os atributos: por quê???

def __init__(self, descricao):
    self.descricao = descricao
    self.__lances = []
    self.maior_lance = sys.float_info.min
    self.menor_lance = sys.float_info.max

nesta linha entre parênteses, não deveriam ser declarados ou informados os campos lances, maior_lance e menor_lance também?? "def init(self, descricao):"

qdo DEVEMOS informar todos ou PODEMOS informar só um ou outro além do self???

obrigada.

2 respostas
solução!

Olá, boa noite! Essa função init é um método especial do python, que é responsável por inicializar os objetos. O init, assim como qualquer função, pode receber parâmetros para serem utilizados e assim definir os valores dos atributos, só que há casos onde os valores devem começar de um jeito específico. Por exemplo:

class Conta:

        def __init__(self, titular, cpf):
                this.__cpf = cpf
                this.__titular = titular
                this.__saldo = 0

        def depositar(self, valor):
                this.__saldo += valor

        def sacar(self, valor):
                this.__saldo -= valor

Nesse exemplo, o init não recebe o parâmetro saldo, pois o saldo inicial de qualquer conta é zero, imagina como seria se pudéssemos abrir uma conta no banco com o valor inicial que quiséssemos! Então nesse contexto, o valor do atributo saldo começa sempre como zero e só pode ser alterado através dos métodos depositar e sacar, a mesma lógica se aplica a leilões: é impossível dar lance em um leilão que ainda não começou, assim a lista de lances começa como uma lista vazia.

Resumindo, só passamos os parâmetros que podem ser definidos inicialmente no init, como nome, cpf e entre outros, enquanto atributos com valores que começam com um valor fixo, como o saldo de uma conta e a quantidade de lances em um leilão começam com zero e são alterados posteriormente com métodos. Espero ter ajudado!

Obrigada! Ajudou muito! Entendi :-)