A get () como método para a verificação de atributos Python

votos
53

Se eu tivesse um dicionário dicte eu queria para verificar se dict['key']eu poderia ou fazê-lo em um trybloco (bleh!) Ou usar o get()método, com Falsecomo um valor padrão.

Eu gostaria de fazer a mesma coisa para object.attribute. Ou seja, eu já tenho objeto para retornar Falsese não tiver sido definida, mas depois que me dá erros como

AttributeError: 'bool' objeto não tem 'atributo' atributo

Publicado 10/12/2008 em 10:49
fonte usuário
Em outras línguas...                            


3 respostas

votos
84

Um análogo mais directa para dict.get(key, default)que hasattrseja getattr.

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

(Onde default_valueé opcional, levantando uma exceção em nenhum atributo se não for encontrado.)

Para o seu exemplo, você iria passar False.

Respondeu 10/12/2008 em 15:27
fonte usuário

votos
16

Você quer dizer hasattr(), talvez?

hasattr(object, "attribute name") #Returns True or False

Python.org doc - Construído em funções - hasattr ()

Você também pode fazer isso, o que é um pouco mais confuso e não funciona para métodos.

"attribute" in obj.__dict__
Respondeu 10/12/2008 em 10:59
fonte usuário

votos
6

Para verificar se a chave está em um dicionário você pode usar in: 'key' in dictionary.

Para a verificação de atributos em objeto usar a hasattr()função:hasattr(obj, 'attribute')

Respondeu 10/12/2008 em 11:01
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more