Функция Python hasattr()
hasattr()Это встроенная функция в Python, используемая для проверки наличия у объекта указанного атрибута.
hasattr()Он возвращает логическое значение, указывающее, содержит ли объект указанный атрибут. Это очень полезно при работе с динамическими атрибутами или когда вам нужно сначала проверить, существует ли атрибут.
Определения слов: hasattr 是 has attribute(有属性)的缩写。
Базовый синтаксис и параметры
Формат синтаксиса
hasattr(object, name)
Описание параметра
- Параметр object:
- Тип: любой объект
- Описание: объект для проверки.
- Имя параметра:
- Тип: String
- Описание: Имя атрибута.
Описание функций
- Возвращаемое значение: Возвращает логическое значение
TrueилиFalse。
Примеры
Пример 1: Базовое использование
Пример
class Person:
def __init__(self):
self.name = "Tom"
self.age = 20
p = Person()
# Проверить, существует ли атрибут
print(hasattr(p, "name")) # Вывод: True
print(hasattr(p, "age")) # Вывод: True
print(hasattr(p, "gender")) # Вывод: False
# Проверить метод
print(hasattr(p, "name")) # Вывод: True
print(hasattr(p, "walk")) # Вывод: False
def __init__(self):
self.name = "Tom"
self.age = 20
p = Person()
# Проверить, существует ли атрибут
print(hasattr(p, "name")) # Вывод: True
print(hasattr(p, "age")) # Вывод: True
print(hasattr(p, "gender")) # Вывод: False
# Проверить метод
print(hasattr(p, "name")) # Вывод: True
print(hasattr(p, "walk")) # Вывод: False
Ожидаемый вывод:
True True False True False
Пояснение кода:
- hasattr() проверяет, имеет ли объект указанный атрибут.
Пример 2: Работа с getattr
Пример
# Безопасно получить атрибут
class Config:
def __init__(self):
self.debug = True
self.port = 8080
config = Config()
# Сначала проверить, затем получить
if hasattr(config, "debug"):
print(f"debug: {config.debug}")
if hasattr(config, "timeout"):
print(f"timeout: {config.timeout}")
else:
print("timeout не существует, используется значение по умолчанию")
# Вывод: timeout не существует, используется значение по умолчанию
# Динамическая проверка
attrs = ["debug", "port", "host"]
for attr in attrs:
if hasattr(config, attr):
print(f"{attr}: {getattr(config, attr)}")
class Config:
def __init__(self):
self.debug = True
self.port = 8080
config = Config()
# Сначала проверить, затем получить
if hasattr(config, "debug"):
print(f"debug: {config.debug}")
if hasattr(config, "timeout"):
print(f"timeout: {config.timeout}")
else:
print("timeout не существует, используется значение по умолчанию")
# Вывод: timeout не существует, используется значение по умолчанию
# Динамическая проверка
attrs = ["debug", "port", "host"]
for attr in attrs:
if hasattr(config, attr):
print(f"{attr}: {getattr(config, attr)}")
Вывод:
При запуске в реальной среде будет отображаться результат проверки.
hasattr()Часто используется сgetattr()в сочетании с.
Другие расширения
Встроенные функции Python3