Как получить доступ к статической переменной внутри метода экземпляра

Я использую 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)
Вернуться на верх