в Python, как я могу проверить тип / длину значений, возвращаемых функцией или методом? - PullRequest
0 голосов
/ 03 июля 2019

Допустим, у меня есть класс Test с атрибутом names и методом calculate.

class Test:
    def __init__(self, names=('square', 'cube')):
        self.names = names

    def calculate(self, x):
        return x**2, x**3

Есть ли простой способ определить, что количество переданных имен равно (переменному) количеству значений, возвращаемых calculate, без фактической передачи данных через этот метод? По сути, я просто хочу требовать, чтобы определение класса было согласованным во время реализации.

Что-то вроде дополнительной строки:

    # check that calculate output and names line up
    # help needed here
    assert len(self.names) == # length of output of self.calculate  

1 Ответ

0 голосов
/ 04 июля 2019

количество значений, возвращаемых вычислением без фактической передачи данных через этот метод

Без вызова calculate() единственное решение, которое я вижу, это простозаранее знаю, что он возвращает ровно два значения, и, таким образом, assert len(self.names) == 2.

Если calculate() может вернуть произвольное количество значений, я не понимаю, как можно избежать его вызова.

...