I'm currently building a class called 'system' that takes in 4 arguments: A, B, C, D which are matrices of a state-space system.
The intent is that the user can input these using nested built-in <class 'list'> types, such as [[1, 0],[0, 1]].
The __init__ method of the class should take these lists and convert them to NumPy arrays of type <class 'np.ndarray'> using np.array() and store them as self.A, self.B ... etc.
However, after completing the np.array() operation, on checking the type of these objects using print(type(self.A)), the console prints <class 'list'>.
I'm not sure how this can be possible since I have clearly defined them as numpy arrays. I have searched online and asked ChatGPT but I haven't been able to find an answer that might explain why this is happening. Could this be to do with NumPy? Or have I seriously misunderstood the way the Python class constructor functions?
The script I am running (all variables cleared) :
import numpy as npclass system(): def __init__(self, A, B=None, C=None, D=None): self.A = np.array(A) self.B = np.array(B) self.C = np.array(C) self.D = np.array(D) print(type(A)) assert self.A.shape[0] == self.A.shape[1], 'System matrix (A) not square' assert self.A.shape[0] == self.B.shape[0], 'Number of rows of A does not match number of rows of B' def fxKutta(self, X, U): X = np.array(X).reshape(-1, 1) U = np.array(U).reshape(-1, 1) assert X.shape[0] == self.A.shape[0], 'Number of rows of X does not match number of rows of A' assert U.shape[0] == self.B.shape[0], 'Number of rows of U does not match number of rows of B' Xdot = self.A @ X + self.B @ U return XdotA = [[1, 1], [1, 1]]B = [[1], [1]]sys = system(A, B)The console after running :
<class 'list'>#====================================================
I tried passing the arrays through another variable :
def __init__(self, A, B=None, C=None, D=None): matA = np.array(A) A = np.array(matA)... which did not work. This would not have been a clean solution anyway.