Нет доступа к возвращаемому значению функции внутри класса

Abudallil

Новичок
Пользователь
Сен 11, 2020
11
0
1
Сторона СОМ сервера:

Python:
import pythoncom
from win32com.server.exception import COMException
import win32com.server.util
import win32com.client.dynamic
import win32gui
import random


class PythonUtilities:
    _public_methods_ = ['base']

    _reg_clsid_ = "{..............................}"
    _reg_desc_ = "for cycle"
    _reg_progid_ = "some"
    # список всех доступных атрибутов без установки
    _readonly_attrs_ = ['revision']

   # атрибуты класса которые определяются и используются для передачи значений от клиента

    _public_attrs_ = ['NDepVar', ...., 'Log']

    Log = ""  # Log для передачи клиенту

    def base(self, InList):

        self.revision = "version 1"

        # InList = [1, 2, 3, 4, 5] # для проверки раскомментить

        InList = list(InList)

        OutList = []

        if len(InList) == 0:
            return OutList

        for index in range(0, len(InList)):
            OutList.append(InList[index])

        if OutList is None:
            return
        else:
            return OutList


num_pot = PythonUtilities()
value_tot = num_pot.base([])
print(value_tot)

###############################################################################################
# дополнительный блок для проверки
class func_Out:

    def valuesForOtherClasses(self):
        self.value = PythonUtilities().base([])  # 'blablablablabla' - для проверки поместить вместо = PythonUtilities().base([])

class Bar(func_Out):

    def __init__(self):
        super(Bar, self).valuesForOtherClasses()
        print(self.value)

Bar()
#############################################################################
if __name__ == '__main__':
    print("Registering COM Server ")
    import win32com.server.register
    win32com.server.register.UseCommandLine(PythonUtilities)
На стороне клиента все значения принимаются.
Необходимо возвращенный результат (OutList) "оставить" в пределах" Питона, для вызова списка другими функциями.

В исходном виде OutList имеет пустой список. Даже "Костыль" в дополнительном блоке через super() возвращает []. Если раскомментить
Код:
# InList = [1, 2, 3, 4, 5]
или
Код:
 'blablablablabla' - для проверки поместить вместо = PythonUtilities().base([])
т.е. литерально заполнить список, то возвращается все, что указано в списке.
В динамическом режиме список всегда пуст.
Как возможно "перехватить" значения OutList в процессе выполнения кода?
 
Последнее редактирование:

Форум IT Специалистов