es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambia la función __str__ de frozenset (u cualquier otro tipo nativo)

Estoy trabajando con frozensets.

Cuando realizo print(my_frozenset) el resultado es algo como “frozenset({1, 2, 3})”.

Sin embargo, tengo muchos frozensets anidados y encuentro esta impresión muy larga y difícil de leer.

Quiero modificarlo para que print(my_frozenset) muestre, por ejemplo, “fs{1,2,3}” u otra cosa diferente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para modificar la forma en que se imprime un frozenset, puedes definir una clase personalizada que herede de frozenset y anular su método repr. Aquí tienes un ejemplo:

    class MyFrozenSet(frozenset):
        def __repr__(self):
            elementos = ','.join(str(e) for e in self)
            return f'fs{{{elementos}}}'
    
    mi_frozenset = MyFrozenSet({1, 2, 3})
    print(mi_frozenset)  # imprime "fs{1,2,3}"
    

    En este ejemplo, la clase MyFrozenSet se define como una subclase de frozenset, por lo que se comporta exactamente como un frozenset. La única diferencia es cómo se imprime. El método repr se anula para devolver una cadena personalizada que comienza con “fs{” y termina con “}”, con los elementos del conjunto separados por comas.

    Puedes modificar este método para imprimir el frozenset de la forma que desees. Solo asegúrate de devolver una cadena que represente adecuadamente el conjunto, y la función print se encargará del resto.

Comments are closed.