для имени в именах: TypeError: объект 'NoneType' не повторяется - PullRequest
0 голосов
/ 08 июля 2019

У меня есть проблема TypeError: 'NoneType' object is not iterable в моем коде для записи метода внутри класса с именем Qrely, и некоторые методы в методе __init__ выполняются следующим образом: def __init__(self,ah=(),bh=(),av=(),bv=(),aph=(),bph=(), apv=(),bpv=()): метод, в котором у меня проблема:

Я пытался изменить тип экземпляров с помощью отправки, например, ah:Tuple, но я получаю ту же ошибку

 def qrelay_op(self,n, phi, alpha, delta):
        self.ah = symbols(print("a_H1={:d}".format(n + 1)))
        self.bh = symbols(print("b_H1={:d}".format(n + 1)))
        self.av = symbols(print("a_V1={:d}".format(n + 1)))
        self.bv = symbols(print("b_V1={:d}".format(n + 1)))
        op = 0

        for i in range(0,n-1):
            op += phi[i] * (self.ah[i]*self.bh[i] + self.av[i]*self.bv[i])

        B = 1/sqrt(2)*np.array([[1, 1],[-1, 1]])

        self.aph = symbols(print("a'_H1={:d}".format(n + 1)))
        self.bph = symbols(print("b'_H1={:d}".format(n + 1)))
        self.apv = symbols(print("a'_V1={:d}".format(n + 1)))
        self.bpv = symbols(print("b'_V1={:d}".format(n + 1)))

        for i in range(0,n-1):
            op = np.transpose(op, self.bh[i], self.ah[i+1], self.bph[i], self.aph[i+1], B)
            op = np.transpose(op, self.bv[i], self.av[i+1], self.bpv[i], self.apv[i+1], B)

        op = np.transpose(op, self.ah[0], self.av[0], self.aph[0], self.apv[0], self.rotatmatrix(alpha))
        op = np.transpose(op, self.bh[n-1], self.bv[n-1], self.bph[n-1], self.bpv[n-1], self.rotatmatrix(delta))

        syms = Qrely(self.ah, self.bh, self.av, self.bv, self.aph, self.bph, self.apv, self.bpv)

        return syms, op

когда я проверяю код, например: A=Qrely() print(A.qrelay_op(3, np.array([np.pi, np.pi/2, np.pi/5]), np.pi/4, np.pi/3)) я получаю эту ошибку: line 693, in symbols for name in names:TypeError: 'NoneType' object is not iterable я не могу (не могу найти этот объект без типа в моем коде, или я что-то упускаю, даже мне все кажется правильным

1 Ответ

1 голос
/ 09 июля 2019

Если вы говорите, что self.ah = symbols(print("a_H1={:d}".format(n + 1))) - это проблема, нам нужно понять, что делает symbols.

Это выглядит как symbols хочет, чтобы вы передавали это что-то итеративное, но вместо этого вы передаете ему вывод print() функции, которая None.

>>> a = print('Sample Text')
>>> print(a)
None

Попробуйте изменить

self.ah = symbols(print("a_H1={:d}".format(n + 1))) 

до

self.ah = symbols("a_H1={:d}".format(n + 1))
...