class Matrix(object): def __init__(self,num_rows=2,num_cols=2): ''' WRITE DOCSTRING HERE! ''' if num_rows <= 0: raise ValueError("Matrix: Error, the dimensions must be positive integers!") if num_cols <= 0: raise ValueError("Matrix: Error, the dimensions must be positive integers!") self.x = num_rows self.y = num_cols self.z = [] for i in range(self.x): self.z.append([]) for i in self.z: for i in range(len(self.z)): i.add(0) return self.z
Traceback (most recent call last): python_unit_test line 10, in test_unit A = Matrix() File "proj11.py", line 32, in __init__ i.add(0) AttributeError: 'int' object has no attribute 'add'
Advertisement
Answer
i
is defined twice in your nested loop, the 2nd i
will overwrite the first. Rename one of them to avoid this. Also, .add
should be .append
and range(len(self.z))
should probably be range(self.y)
in order to have the correct number of columns.
for row in self.z: for _ in range(self.y): row.append(0)
Side note: why is __init__
returning a value?