На самом деле нет понятия "вызывающий объект ".Вы можете исследовать стек и определить, имеет ли ваша вызывающая функция первый аргумент с именем self
, я полагаю - если вы вызываетесь напрямую из нормально кодированного instance метода (абсолютно не a класс метод как вы говорите ... Я полагаю, вы просто ужасно неправильно говорите, потому что сама цель 1014 * цель classmethod
означает, что не имеет «объект», то есть включенный экземпляр! -), который должен это обнаружить.
Модуль inspect предлагаетВы инструменты для расширенного самоанализа (рекомендуется только для целей отладки и разработки, никогда для "фактического использования в производстве" !!!).Однако обратите внимание, что даже отслеживание функции не является тривиальным: вы получаете стековых фреймов , которые указывают на объект кода (который не указывает на функцию).
Тем не менее, он может быть может быть организован, потому что существуют псевдо-диктанты локальных переменных, также указываемых из стековых фреймов, и аргументы являются локальными переменными, так что вы ищетезапись в локальных переменных стекового фрейма вашего вызывающего абонента с именем self
(и, конечно же, вам нужно много оптимизма и удачи, поскольку никто не заставляет ваш вызывающий код разумно кодироваться -- аргумент, обычно называемый self
, может быть назван иначе, и тогда у вас возникнут проблемы; -).