Щоб отримати ім'я поточної функції або методу всередині неї, врахуйте:
import inspect
this_function_name = inspect.currentframe().f_code.co_name
sys._getframe
також працює замість цього, inspect.currentframe
хоча остання уникає доступу до приватної функції.
Щоб отримати замість імені функції виклику, розгляньте f_back
як в inspect.currentframe().f_back.f_code.co_name
.
Якщо ви також використовуєте mypy
, то можна поскаржитися, що:
помилка: Елемент "None" у "Необов'язково [FrameType]" не має атрибута "f_code"
Щоб придушити вищевказану помилку, врахуйте:
import inspect
import types
from typing import cast
this_function_name = cast(types.FrameType, inspect.currentframe()).f_code.co_name