Как задать параметры аргумента по умолчанию, динамически установленные файлом конфигурации, созданным пользователем?
Файл конфигурации состоит из путей функций с объявленными аргументами. Возможность импортировать функцию позволит мне получить имя функции и путь к модулю.
Кто-нибудь знает, как импортировать функцию, учитывая номер строки внутри функции и файл python, содержащий функцию (включая функции внутри классов)?
РЕДАКТИРОВАТЬ (добавлен приведенный ниже вариант использования по просьбе комментариев)
Я хочу получить функцию, которая по умолчанию имеет аргумент configured_arg()
в следующих примерах:
class SomeClass:
def __init__(kwarg=configured_arg()):
...
def some_function(kwarg=configured_arg()):
...
def another_function(kwarg=configured_arg()):
...
def configured_arg():
# NOTE: `inspect.stack` returns the caller as "<module>"
# NOTE: `inspect.stack` returns the `lineno` and file path of the call
caller = get_caller() # Unsure of how to implement
arg_key = get_arg_key() # Unsure of how to implement
return fetch_configured_value(caller, arg_key) # Fetch default arg from global config
Перед публикацией на SO я пытался использовать inspect.stack
. Вызывающий абонент (например, some_function
) не отображается в стеке configurable_arg
. Тем не менее, inspect.stack
имеет lineno
аргумент по умолчанию, который был объявлен. Этот опыт вдохновил текущий вопрос.