Estoy tratando de usar una lambda para verificar si el atributo problematic_object de un objeto ( self ) es None . Si es así, debería devolver un "" (una cadena vacía), y si no, str(self.problematic_object) . He probado a hacerlo de 3 formas:
1:
def __str__(self): return "string1" + str(self.object) + "\n" + "string2" + self.another_object + "\n" + "string3" + exec(lambda self: str(self.problematic_object) if self.problematic_object!=None else "")2:
def __str__(self): return "string1" + str(self.object) + "\n" + "string2" + self.another_object + "\n" + "string3" + (lambda self: str(self.problematic_object) if self.problematic_object!=None else "")3:
def __str__(self): return "string1" + str(self.object) + "\n" + "string2" + self.another_object + "\n" + "string3" + lambda self: str(self.problematic_object) if self.problematic_object!=None else ""Me sale este error en todos los casos:
Error de sintaxis: sintaxis invalida
Sé que esto se puede hacer usando un if-else normal, pero ¿hay alguna forma de hacerlo usando un lambda ? Esta es la primera vez que uso una lambda y este tipo de if-else . ¿Cuál es el error que estoy cometiendo? ¿Se puede usar una lambda así?
Si self.problematic_object es posiblemente None , y en ese caso solo desea una cadena vacía, simplemente use f-strings para agregarla a su cadena general. No hay necesidad de ninguna lógica booleana:
def __str__(self): return f"string1{self.object}\nstring2{self.another_object}\nstring3{self.problematic_object}" Si self.problematic_object es None , no se agregará nada al final de la cadena. Si no es None , se agregará su valor.