Как вернуть массив внутри функции?

Я создал класс в своем проекте Django и вызываю его из представлений. Мне нужен результат функции в этом классе, но я не могу вернуть массив. Я пытался выровнять массив извне, но он возвращает:

<module 're' from 'C:\\Users\\edeni\\AppData\\Local\\Programs\\Python\\Python39\\lib\\re.py'>

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

views.py

    def setup_wizard(request):
      ...
      functions.myClass(setup.n_username, setup.n_password,
                                              setup.n_url, setup.n_port, setup.db_password,
                                              username=request.user.username)  
**functions.py**
class myClass():

    def __init__(self, n_user, n_password, n_url, n_port, db_password, username):
        ...
        self.elastice_yolla(username)
        ...

        def elastice_yolla(self, username):
            self.report_final = []
            array_length = len(glob.glob(self.location + "\*\*.nessus"))
            self.static_fields = dict()
            for in_file in glob.glob(self.location + "\*\*.nessus"):
                try:
                    i = 0   
                    with open(in_file) as f:
                        if os.path.getsize(in_file) > 0:
                            np = NES2(in_file, self.index_name, self.static_fields, username)
                            report_final = np.toES()
                            time.sleep(0.02)

                    i = i + 1
                except:
                    pass

        print("report")
        print(report_final)

class NES2:
  def __init__(self, input_file, index_name, static_fields, username):
  ....

  def toES(self):
    ...
    for ...
        for ...
                            try:
                                if bas['cve']:
                                self.es.index(index=self.index_name, doc_type="_doc", body=json.dumps(bas))
                                rep_result.append(json.dumps(bas))
                            except KeyError:
                                pass
  return rep_result

Я не знаю, в чем заключается ваша реальная проблема, но я думаю, что вам следует организовать код по-другому.

elastice_yolla() не должен быть определен внутри __init__ и не должен выполняться в __init_, а должен использовать return report_final

Затем в setup_wizard вы можете создать экземпляр и запустить elastice_yolla()

my_object = functions.myClass(...)
report = my_object.elastice_yolla()

def setup_wizard(request):
      ...
      my_object = functions.myClass(setup.n_username, setup.n_password,
                                              setup.n_url, setup.n_port, setup.db_password,
                                              username=request.user.username)  

      report = my_object.elastice_yolla()
class myClass():

    def __init__(self, n_user, n_password, n_url, n_port, db_password, username):
        ...
        # self.elastice_yolla(username)
        ...

    # outside `__init__`
    def elastice_yolla(self, username)
        report_final = []
        
        array_length = len(glob.glob(self.location + "\*\*.nessus"))
        self.static_fields = dict()
        for in_file in glob.glob(self.location + "\*\*.nessus"):
            try:
                i = 0   
                with open(in_file) as f:
                    if os.path.getsize(in_file) > 0:
                        np = NES2(in_file, self.index_name, self.static_fields, username)
                        report_final = np.toES()
                        time.sleep(0.02)

                i = i + 1
            except Exception as ex:
                print('Exception:', ex)

        return report_final

В конечном итоге вы можете запустить elastice_yolla внутри __init__ и присвоить результат переменной класса с помощью self. и тогда другая функция сможет получить это значение

class myClass():

    def __init__(self, n_user, n_password, n_url, n_port, db_password, username):
        ...
        self.report_final = self.elastice_yolla(username)
        ...

    # outside `__init__`
    def elastice_yolla(self):  # use self.username
        report_final = []

        array_length = len(glob.glob(self.location + "\*\*.nessus"))
        self.static_fields = dict()
        for in_file in glob.glob(self.location + "\*\*.nessus"):
            try:
                i = 0   
                with open(in_file) as f:
                    if os.path.getsize(in_file) > 0:
                        np = NES2(in_file, self.index_name, self.static_fields, self.username)
                        report_final = np.toES()
                        time.sleep(0.02)

                i = i + 1
            except Exception as ex:
                print('Exception:', ex)

        return report_final
def setup_wizard(request):
      ...
      my_object = functions.myClass(setup.n_username, setup.n_password,
                                              setup.n_url, setup.n_port, setup.db_password,
                                              username=request.user.username)  

      report = my_object.report_final   # get from variable, not from function.

Или вы должны использовать self.report_final в elastice_yolla

class myClass():

    def __init__(self, n_user, n_password, n_url, n_port, db_password, username):
        ...
        self.elastice_yolla(username)
        ...

    # outside `__init__`
    def elastice_yolla(self):  # use self.username
        self.report_final = []  # <--- self.

        array_length = len(glob.glob(self.location + "\*\*.nessus"))
        self.static_fields = dict()
        for in_file in glob.glob(self.location + "\*\*.nessus"):
            try:
                i = 0   
                with open(in_file) as f:
                    if os.path.getsize(in_file) > 0:
                        np = NES2(in_file, self.index_name, self.static_fields, self.username)
                        self.report_final = np.toES()  # <--- self.
                        time.sleep(0.02)

                i = i + 1
            except Exception as ex:
                print('Exception:', ex)
def setup_wizard(request):
      ...
      my_object = functions.myClass(setup.n_username, setup.n_password,
                                              setup.n_url, setup.n_port, setup.db_password,
                                              username=request.user.username)  

      report = my_object.report_final   # get from variable, not from function.
Вернуться на верх