Недавно в процессе разработки на питоне я хочу добиться доступа к функциям через строки. Я искал некоторые методы в Интернете и обнаружил, что они недостаточно лаконичны. В итоге автор реализовал эту функцию через встроенный в python метод getattr, метод очень простой, поэтому я поделюсь им здесь.
Первая представляет собой краткое введение в метод GetAttr.
Введение в функцию Python getattr()
описывать
getattr()Функция используется для возврата значения свойства объекта.
грамматика
Синтаксис getattr:
getattr(object, name[, default])
параметр
- предмет – предмет.
- name — строка, свойство объекта.
- default -- возвращаемое значение по умолчанию. Если этот параметр не указан, будет вызвана ошибка AttributeError при отсутствии соответствующего атрибута.
возвращаемое значение
Возвращает значение свойства объекта.
пример
В следующем примере показано, как использовать getattr:
>>>class A(object):
... bar = 1
...
>>> a = A()
>>> getattr(a, 'bar') # 获取属性 bar 值
1
>>> getattr(a, 'bar2') # 属性 bar2 不存在,触发异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'bar2'
>>> getattr(a, 'bar2', 3) # 属性 bar2 不存在,但设置了默认值
3
>>>
Реализация вызова функции из строки
Создайте новый скрипт Python и назовите его main.py.
import main as this
def add(a,b):
c = a + b
return c
if __name__ == "__main__":
out = getattr(this,"add")(1,2)
print(out)
Зачем обращаться к функциям через строки?
На мой взгляд, строки легче передавать, чем функции, например, мы можем легко передавать параметры командной строки или константы между разными скриптами.