Как получить текущий файл, текущий класс и текущий метод с Python? - PullRequest
30 голосов
/ 21 мая 2009
  • Имя файла, из которого выполняется код
  • Имя класса, из которого выполняется код
  • Имя метода (атрибута класса), в котором выполняется код

Ответы [ 4 ]

30 голосов
/ 21 мая 2009

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

from inspect import stack

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

f = Foo()
10 голосов
/ 21 мая 2009
import sys

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

a = A()
5 голосов
/ 21 мая 2009
self.__class__.__name__  # name of class i'm in

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

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

3 голосов
/ 22 мая 2009

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

class A:
    pass

B = A
b = B()

Что такое «имя класса» b здесь? Это А или Б? Почему?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...