Чтобы проверить, есть ли у объекта атрибут, в Python можно использовать функцию hasattr()
.
Эта функция принимает два аргумента: объект, который вы хотите проверить, и имя атрибута, который вы ищете.
Например:
class MyClass: def __init__(self): self.attr = 5 obj = MyClass() # Check if obj has the attribute 'attr' if hasattr(obj, 'attr'): # Do something pass
В этом примере hasattr(obj, 'attr')
вернет True, потому что obj
имеет атрибут attr
. Если бы obj
не имел атрибута attr
, hasattr(obj, 'attr')
вернул бы False
.
Также для проверки, есть ли у объекта атрибут, в Python можно использовать функцию getattr()
.
Функция getattr()
принимает три аргумента: объект, который вы хотите проверить, имя атрибута, который вы ищете, и значение по умолчанию, которое возвращается, если атрибут не существует.
Например:
class MyClass: def __init__(self): self.attr = 5 obj = MyClass() # Check if obj has the attribute 'attr' value = getattr(obj, 'attr', None) if value is not None: # Do something pass
Как вывести все атрибуты объекта
Чтобы перечислить все атрибуты объекта Python, можно воспользоваться функцией dir()
. Она принимает объект в качестве аргумента и возвращает список всех атрибутов и методов объекта.
Например, давайте перечислим все атрибуты нашего класса:
class MyClass: def __init__(self): self.attr = 5 def my_method(self): pass obj = MyClass() # List all the attributes and methods of obj attributes = dir(obj) print(attributes)
В этом примере dir(obj)
вернет список всех атрибутов и методов obj
. Вывод этого кода будет выглядеть примерно так:
Это атрибуты по умолчанию, которые ассоциируются с каждым классом в Python. Но если вы обратите внимание, то самый последний атрибут в списке называется 'my_method'
. Это метод, который вы указали в классе MyClass
.
Как вывести значения атрибутов инстанцированного объекта
Чтобы перечислить все значения атрибутов инстанцированного объекта в Python, можно использовать функцию vars()
. Эта функция принимает объект в качестве аргумента и возвращает словарь всех атрибутов и соответствующих им значений для этого объекта.
Например:
class MyClass: def __init__(self): self.attr1 = 5 self.attr2 = 'hello' obj = MyClass() # List all the attribute values of obj attributes = vars(obj) print(attributes)
В этом примере vars(obj)
вернет словарь всех атрибутов и соответствующих им значений для объекта obj
.
{'attr1': 5, 'attr2': 'hello'}
Обратите внимание, что эта функция не включает методы с двойным подчеркиванием, как это делала функция dir()
из предыдущего примера.
Спасибо, что прочитали. Счастливого кодинга!
Перевод статьи Artturi Jalli “Python How to Check If an Object Has an Attribute (hasttr, getattr)”.