Как получить доступ к статической переменной внутри метода экземпляра
Я использую GenericAPIView, когда мой метод post попадает в функцию, она вызывается и выполняет определенные действия, такие как создание и завершение некоторых объектов в моем классе. Поэтому я использую здесь статический метод, но в исключении я не могу сослаться на переменную с именем var, используемую в статическом методе, чтобы использовать ее в моем методе post exception
class MyApiView(GenericAPIView):
@staticmethod
def my_custom_method(arg):
if condition1 and condition2:
var = Class1(arg=arg)
var.create()
var = Class2(arg=arg)
var.complete()
if condition4 or condition3:
var = Class3(arg=arg)
var.create()
def post(self, request):
try:
my_cust_method(arg)
except Exception:
logger.error(f"{var.__class__}", exc_info=True)
Нерешенная ссылка var
Переменная var
является локальной переменной. Она локальна для вашего статического метода my_custom_method
. Если вы хотите получить к ней доступ из других методов, то вам нужно объявить ее как переменную класса (статическую).
Вот модифицированная версия вашего кода:
class MyApiView(GenericAPIView):
var = None
@staticmethod
def my_custom_method(arg):
if condition1 and condition2:
MyApiView.var = Class1(arg=arg)
MyApiView.var.create()
MyApiView.var = Class2(arg=arg)
MyApiView.var.complete()
if condition4 or condition3:
MyApiView.var = Class3(arg=arg)
MyApiView.var.create()
def post(self, request):
try:
my_cust_method(arg)
except Exception:
if MyApiView.var == None:
logger.error(f"var not initialised", exc_info=True)
else:
logger.error(f"{MyApiView.var.__class__}", exc_info=True)