Czy istnieje sposób tak, że następujący kod:Python: jak zdobyć * pełne * nazwę funkcji jestem w
import traceback
def log(message):
print "%s: %s" %(traceback.extract_stack()[0:-1][-1][2], message)
def f1():
log("hello")
class cls(object):
def f1(self):
log("hi there")
f1()
mycls = cls()
mycls.f1()
wyświetlacze:
f1: hello
cls.f1: hi there
zamiast:
f1: hello
f1: hi there
?
Próbowałem użyć modułu 'sprawdzać', ale nie był udany ...
Julien
EDIT:
Chodzi o to, aby funkcja 'log', aby móc pobierać jego nazwa wywołująca: (samodzielnie za pomocą tracebacka, inspekcji lub dowolnej innej koniecznej).
Nie chcę przekazywać nazwy klasy ani niczego innego niż "wiadomość" do funkcji "log".
Czy możesz użyć ['__qualname__'] (https://www.python.org/dev/peps/pep-3155/)? – mgilson
https://stackoverflow.com/questions/10973362/python-logging-function-name-file-name-line-number-using-a-single-file –
@mgilson ze względu na składnię python2.x w pytaniu I ' nie zgadujesz? –