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!