получение имени объекта и имени функции

На самом деле это 2 вопроса. 1) Существует ли общий способ получить имя класса экземпляра, поэтому, если у меня есть класс

class someClass(object): 

Я хотел бы встроенный способ, который дает мне строку 'someClass'

2) Аналогично функциям. Если бы у меня был

 def someFunction(): .... print builtinMethodToGetFunctionNameAsString return 

он будет печатать 'someFunction'

Причина, по которой я ищу это, заключается в том, что у меня есть немного джунглей классов и подклассов, и для отладки я бы хотел напечатать, где я, поэтому ко всем методам я просто хотел бы добавить что-то по строкам

 print 'Executing %s from %s' %(getFunctionName,getClassName) 

Поэтому я ищу общую команду, которая знает класс и функцию, где она есть, чтобы я мог копировать и вставлять строку во все методы без необходимости писать отдельную строку для каждого из них

2 Solutions collect form web for “получение имени объекта и имени функции”

используйте атрибут __name__ :

Класс:

 >>> class A:pass >>> A.__name__ 'A' >>> A().__class__.__name__ #using an instance of that class 'A' 

Функция:

 >>> def func(): ... print func.__name__ ... >>> func.__name__ 'func' >>> func() func 

Быстрый взлом для занятий будет:

 >>> import sys >>> class A(): ... def func(self): ... func_name = sys._getframe().f_code.co_name ... class_name = self.__class__.__name__ ... print 'Executing {} from {}'.format(func_name, class_name) ... >>> A().func() Executing func from A 

функциональная часть уже ответила на этом посту SO . Код будет выглядеть следующим образом:

 import sys print sys._getframe().f_code.co_name 

Для части класса используйте: A.__name__ или A().__class__.__name (для экземпляра)

  • возвращает переменные выходы в функции Python?
  • Что означает «оценивается только один раз» для сравнения в Python?
  • Последняя итерация Python для цикла
  • Только определенный уровень регистрации на python
  • Google App Engine: task_retry_limit не работает?
  • Python - Как сделать кроссворд быстрее
  • объединить два списка словарей на одном ключе
  • лучший способ реализовать колоду для карточной игры в python
  • Вырезать строку после определенной фразы?
  • Постоянный объект Python изнутри функции
  • Вызов функции верхнего уровня по имени в Python
  • Python - лучший язык программирования в мире.