Resumo : neste tutorial, você aprenderá como usar a hasattr()
função Python para verificar se um objeto possui um atributo nomeado.
Introdução à função hasattr() do Python
A hasattr()
função retorna True
se um objeto tiver um atributo nomeado especificado por uma string:
hasattr(object, name)
Linguagem de código: Python ( python )
A hasattr()
função possui dois parâmetros:
object
é o objeto que você deseja verificar.name
é uma string que especifica o nome do atributo.
O hasattr()
retorno True
se o objeto possui um atributo com o nome especificado pela string name
ou False
não.
Exemplo de função hasattr() em Python
O exemplo a seguir ilustra como usar a hasattr()
função:
class Message:
error = 'error'
warning = 'warning'
info = 'info'
success = 'success'
result = hasattr(Message, 'error')
print(result) # 👉 True
result = hasattr(Message, 'information')
print(result) # 👉 False
Linguagem de código: Python ( python )
Observe que tudo em Python é um objeto incluindo uma classe . Portanto, você pode passar uma classe para a hasattr()
função.
Como funciona.
Primeiro, defina a Message
classe com quatro atributos de classe:
class Message:
error = 'error'
warning = 'warning'
info = 'info'
success = 'success'
Linguagem de código: Python ( python )
Segundo, use o hasattr()
para verificar se a Message
classe possui o error
atributo:
result = hasattr(Message, 'error')
print(result) # 👉 True
Linguagem de código: Python ( python )
Nesse caso, ele retorna True
porque a Message
classe possui o error
atributo.
Terceiro, use the hasattr()
para verificar se Message
possui o information
atributo:
result = hasattr(Message, 'information')
print(result) # 👉 False
Linguagem de código: Python ( python )
Neste exemplo, o hasattr()
retorno é False
porque a Message
classe não possui o information
atributo.
Um exemplo prático da função hasattr() do Python
Na prática, você usa a
função para verificar se um objeto possui um atributo ou um método cujo nome só é conhecido em tempo de execução antes de acessá-lo. Por exemplo, você pode usar o hasattr()
para verificar se um objeto possui um método antes de chamá-lo.hasattr()
O exemplo a seguir aprimora a classe Validation do getattr()
tutorial :
import re
class Validation:
ERRORS = {
'required': 'The {} is required',
'email': 'The {} is not a valid email address'
}
def _required(self, value):
return len(value) > 0
def _email(self, value):
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
return re.fullmatch(pattern, value)
def validate(self, data, rules):
errors = {}
for field, rule in rules.items():
if hasattr(self, f'_{rule}'):
is_valid_method = getattr(self, f'_{rule}')
if not is_valid_method(data[field]):
errors[field] = self.ERRORS[rule].format(field)
else:
errors[field] = f'The rule {rule} is not supported'
return errors
if __name__ == '__main__':
validation = Validation()
data = {'name': 'Jane Doe', 'email': '[email protected]'}
rules = {'name': 'required', 'email': 'email'}
errors = validation.validate(data, rules)
print(errors)
Linguagem de código: Python ( python )
Neste exemplo, hasattr()
verifica se a Validation
classe possui um método com um nome que corresponda a uma regra antes de chamá-la. Se o método não existir, o validate()
método adiciona uma entrada ao errors
dicionário.
Resumo
- Use Python
hasattr()
para verificar se um objeto possui um atributo com nome.