Рубрики
Без рубрики

Использование функции Python Getattr ()

И снова здравствуйте! В сегодняшней статье мы смотрим на функцию Python Getattr () в Python.

Автор оригинала: Pankaj Kumar.

Использование функции Python Getattr ()

И снова здравствуйте! В сегодняшней статье мы смотрим на функцию Python Getattr () в Python.

Эта функция пытается получить атрибут объекта Python. Это очень похоже на функцию SetAttr (), но она не модифицирует объект.

Давайте узнаем, как мы можем использовать эту функцию для использования, используя несколько простых примеров.

Основной синтаксис Python Getattr ()

Основной синтаксис функции Getattr () выглядит следующим образом:

value = getattr(object, attribute_name[, default_value])

Здесь мы проезжаем объект к getattr () Отказ Он пытается получить attribute_name (который должен быть строкой) этого объекта. Если атрибут существует, он даст нам соответствующую ценность Отказ

Это эквивалентно синтаксису:

value = object.attribute_name

В противном случае есть два случая:

  • Если приведено значение по умолчанию ( Default_Value ), он просто будет использовать его и вернуть значение этого значения по умолчанию.
  • В противном случае это просто поднимет AttributeError Исключение, поскольку наш атрибут не найден.

Точка getattr () Чтобы не только получить значение атрибута, но и проверять, что он существует!

Давайте теперь посмотрим на несколько примеров, чтобы лучше наше понимание.

Использование Getattr () – некоторые примеры

Сначала сделаем простой пример, где у вас есть ученик, с Имя и Roll_num атрибуты. Мы получим их, используя getattr () Отказ

class Student():
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

student = Student('Amit', 8)

print(f"Name: {getattr(student, 'name')}")
print(f"Roll No: {getattr(student, 'roll_no')}")

Выход

Name: Amit
Roll No: 8

Действительно, мы установили правильные атрибуты, и мы возвращаем их с помощью getattr () !

Теперь, в этом случае, поскольку оба атрибута были там, не произошло ошибки. Тем не менее, давайте попробуем получить атрибут, который мы не поместили в класс; Например – возраст Отказ

class Student():
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

student = Student('Amit', 8)

print(f"Name: {getattr(student, 'name')}")
print(f"Roll No: {getattr(student, 'roll_no')}")

# Will raise 'AttributeError' Exception since the attribute 'age' is not defined for our instance
print(f"Age: {getattr(student, 'age')}")

Выход

Name: Amit
Roll No: 8
Traceback (most recent call last):
  File "getattr_example.py", line 12, in 
    print(f"Age: {getattr(student, 'age')}")
AttributeError: 'Student' object has no attribute 'age'

Здесь мы пытались получить атрибут, который не был определен. Поскольку не было никаких вариантов по умолчанию, Python непосредственно поднял исключение.

Если мы хотим установить опцию по умолчанию для '100' Затем в этом случае, хотя мы пытаемся получить возраст , так как это не там, это вернется 100 вместо.

Давайте проверим это.

class Student():
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

student = Student('Amit', 8)

print(f"Name: {getattr(student, 'name')}")
print(f"Roll No: {getattr(student, 'roll_no')}")

# Will not raise AttributeError, since a default value is provided
print(f"Age: {getattr(student, 'age', 100)}")

Выход

Name: Amit
Roll No: 8
Age: 100

Почему вы должны использовать Getattr ()?

Поскольку мы упоминали ранее, что эта функция эквивалентна object.attribute_name Какой смысл этой функции?

Хотя приведенное выше оператор с использованием точки точек является TRUE, он действителен только тогда, когда имя атрибута действительно определено во время звонка!

Итак, если ваши классы такие, что структура объекта продолжает время от времени меняться, вы можете использовать getattr () Чтобы проверить, находится ли объект в каком-то конкретном состоянии!

Это также дает нам очень хороший способ легко справиться с исключениями, а также предоставлять затруднительные значения по умолчанию. В случае, если что-то пошло не так, мы могли бы либо поймать AttributeError Исключение или проверьте значение по умолчанию.

Надеюсь, что делает его немного более понятнее относительно того, почему это может быть полезно для вас!

Заключение

Мы узнали о том, как мы могли бы использовать getattr () Функция для получения атрибутов объекта во время выполнения.

Рекомендации