Взгляните на модуль inspect
. Это не всегда будет работать (встроенные в C встроенные программы не обязательно будут иметь номера строк или даже связанные файлы, поскольку некоторые модули, такие как sys
, встроены в интерпретатор ядра, а не распространяются в виде отдельных файлов), но это самый близкий вам собираемся получить то, что вы ищете.
Обновление вашего примера для предоставления информации о происхождении вещей:
import inspect
class PQR(AQZ):
def Activity(self):
obj = ABC()
# How to know in which file, the function Start is defined
try:
_, lineno = inspect.getsourcelines(obj.Start)
srcfile = inspect.getsourcefile(obj.Start)
except TypeError:
print("{!r} is a built-in".format(obj.Start))
else:
print("{!r} comes from {!r}, line {}".format(obj.Start, srcfile, lineno))
obj.Start()