Как получить имя класса из связанного метода с помощью проверки?

class MyClass:
  def my_method(self):
    print(get_context())

MyClass().my_method()

Мне нужно получить следующую строку:

MyClass::my_method

sys._getframe(2).f_code.co_name дает мне только "my_method". Как получить также имя класса?


person Artem Selivanov    schedule 06.02.2016    source источник


Ответы (1)


Вы можете получить имя класса, позвонив __class__.__name__ из self.

class Foo(object):
    def bar(self):
        print(self.__class__.__name__)

Foo().bar()

Выход: Фу

person idjaw    schedule 06.02.2016
comment
Нет. Функция get_context() не знает о себе - person Artem Selivanov; 06.02.2016
comment
Что ты пытаешься сделать? У вас есть контроль над этим методом? Можете ли вы передать параметры этому методу? Вы могли передать себя методу, и у вас также будет необходимая информация? - person idjaw; 07.02.2016
comment
Взгляните на это. Я думаю, это то, что вы ищете: stackoverflow.com/questions/17065086/ - person idjaw; 07.02.2016
comment
Я вынул метод B из класса сам по себе, и он сработал. Так и должно быть, я считаю. - person idjaw; 07.02.2016
comment
Это необходимо для целей отладки с простым синтаксисом: например: INFO_MSG(Hi!) ›› MyClass::MyMethod INFO: Привет! Спасибо! Ответ выше помог мне. - person Artem Selivanov; 07.02.2016