Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Usando o defaultdict para instanciar um novo objeto

O professor usou um exemplo de init em que não havia parâmetros, daí, o objeto foi criado.

Mas e se o meu init para criar uma classe de uma conta bancária, por exemplo, necessitasse de um código? O que eu deveria fazer para que, ao "verificar" se a chave existe no meu defaultdict, o objeto fosse criado, visto que para criar um objeto nessa classe, eu preciso dar um código novo?

1 resposta
solução!

defaultdict implementa o método __missing__(key)__, quando não encontra a chave +.

A saída é implementar um defaultdict customizado, sobrescrevendo esse método +:

class keydefaultdict(defaultdict):
    def __missing__(self, key):
        if self.default_factory is None:
            raise KeyError( key )
        else:
            ret = self[key] = self.default_factory(key)
            return ret

d = keydefaultdict(C)
d[x] # returns C(x)