Próbuję dowiedzieć się w czasie wykonywania, gdzie obiekt został utworzony, ponieważ umożliwiłoby to dostarczenie bardzo przydatnego komunikatu o błędzie użytkownikom mojej biblioteki.Jak mogę się dowiedzieć, gdzie utworzono obiekt?
Załóżmy, że mamy następujący kod:
import mylib
obj = mylib.MyClass()
obj
jest następnie przekazywana do instancji innej klasy z mylib
i przechodzi na wspaniałą podróż. Gdzieś wzdłuż linii, obj
powoduje coś złego, i chciałbym wskazać użytkownikowi, gdzie utworzono instancję obj
.
Miałem nadzieję, że będę mógł użyć modułu inspect, aby dowiedzieć się, w którym pliku i przy którym numerze linii obj
został utworzony. Niestety, inspect.getsourcefile
i inspect.getsourcelines
nie obsługują instancji. Czy istnieje techniczny powód, dla którego nie jest to obsługiwane?
Czy istnieje inny sposób uzyskania danych, których szukam?
czy to nie jest zbyt skomplikowane? kiedy dzieje się coś złego, dlaczego nie zrobić tego, co wszyscy (przypuszczalnie) robimy? W: import traceback + try: ... except: traceback.print_exc() – StefanNch