Подтвердить что ты не робот

Как получить текущий файл, текущий класс и текущий метод с помощью Python?

  • Название файла, из которого выполняется код
  • Имя класса, из которого выполняется код
  • Имя метода (атрибут класса), в котором выполняется код
4b9b3361

Ответ 1

Вот пример каждого из них:

from inspect import stack

class Foo:
    def __init__(self):
        print __file__
        print self.__class__.__name__
        print stack()[0][3]

f = Foo()

Ответ 2

import sys

class A:
    def __init__(self):
        print __file__
        print self.__class__.__name__
        print sys._getframe().f_code.co_name

a = A()

Ответ 3

self.__class__.__name__  # name of class i'm in

для остальных модулей sys и trace

http://docs.python.org/library/sys.html http://docs.python.org/library/trace.html

Дополнительная информация: https://mail.python.org/pipermail/python-list/2001-August/096499.html а также http://www.dalkescientific.com/writings/diary/archive/2005/04/20/tracing_python_code.html

Вы хотите, чтобы это было для сообщения об ошибках, потому что модуль трассировки может обрабатывать это:

http://docs.python.org/library/traceback.html

Ответ 4

Будьте очень осторожны. Рассмотрим:

class A:
    pass

B = A
b = B()

Что такое "имя класса" b здесь? Это A или B? Почему?

Дело в том, что вам не нужно знать или заботиться. Объект - это то, что он есть: его имя очень редко полезно.