ValueError: Недостаточно значений для распаковки (ожидается 3, получено 1) - кортеж содержит 3 элемента - PullRequest
0 голосов
/ 09 мая 2018

Я создал свойство класса для обработки данных изображения, а затем пытаюсь присвоить данные этому свойству с помощью трехэлементного кортежа.По некоторым причинам Python, кажется, считает, что мой кортеж содержит только один элемент.Любые идеи о том, что здесь происходит?

Установщик свойств определяется следующим образом:

@data.setter
def data(self, *args):
    image_array, dtype, sizes = args
    if image_array is None:
        self._data = np.empty(sizes, dtype)
    else:
        self._data = np.array(image_array, dtype)
        self._set_color_data()

И после выполнения я получаю следующий вывод:

test = (image_temp, np.uint8, sizes)
print(len(test))
>>> 3
self.image5d.data = test

Traceback (most recent call last):
File "C:\***\Python36\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "c:***\mmCIAD\mmciad.py", line 88, in open_file
self.image5d.data = test
File "c:\***\mmCIAD\mmciad.py", line 172, in data
image_array, dtype, sizes = args
ValueError: not enough values to unpack (expected 3, got 1)

Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 09 мая 2018

Вы должны использовать:

def data(self, args):

В настоящее время *args просто упаковывает кортеж в первый элемент, так что вы получаете:

args = [(v1, v2, v3)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...