Un método similar a get () para comprobar los atributos de Python

78

Si tuviera un diccionario dicty quisiera verificarlo dict['key'], podría hacerlo en un trybloque (¡bleh!) O usar el get()método, conFalse un valor predeterminado.

Me gustaría hacer lo mismo por object.attribute. Es decir, ya tengo un objeto para devolver Falsesi no se ha configurado, pero eso me da errores como

AttributeError: el objeto 'bool' no tiene atributo 'atributo'

jamtoday
fuente

Respuestas:

124

Un análogo más directo de lo dict.get(key, default)que hasattres getattr.

val = getattr(obj, 'attr_to_check', default_value)

(Donde default_valuees opcional, generar una excepción en ningún atributo si no se encuentra).

Por tu ejemplo, pasarías False.

Brian
fuente
7

Para comprobar si una clave se encuentra en un diccionario puede utilizar in: 'key' in dictionary.

Para verificar atributos en el objeto, use la hasattr()función:hasattr(obj, 'attribute')


fuente
¡La única respuesta que aborda el hecho de que ambas opciones para verificar un dictado presentado por OP son Bleh!
Mad Physicist