Я пытаюсь создать класс матрицы, который хранит исходный ввод, а затем создает еще 2 переменные из исходного ввода, называемые строками и столбцами, что означает, что я могу получить доступ к определенным строкам или столбцам, выполнив что-то вроде матрицы ([[1, 2], [3, 4]]). Строки [0], чтобы получить [1, 2] или матрицу ([[1, 2], [3, 4]]). Столбцы [0], чтобы получить [1, 3].Пока это работает довольно хорошо, однако, если бы я хотел переназначить строку или столбец на другое значение, например:
A = matrix([[1, 2], [3, 4]])
print(A.columns[0])
, что дает мне:
[1, 2]
но если бы я выполнил этот блок кода ниже, чтобы обновить столбец, подобный этому,
A.columns[0] = [5, 6]
, а затем снова вывести A, это дало бы мнеисходный ввод,
print(A)
[[1, 2], [3, 4]]
, но печать a.columns [0] дает мне обновленный столбец
[5, 6]
и печать a.columns в целом дает мне
[[5, 6],[2, 4]]
Как бы я закодировал его так, чтобы при выполнении A.columns [0] обновлялась и входная переменная, и переменная столбца?Вот мой оригинальный код:
class matrix:
def __init__(self, values):
self.values = values
self.rows = [row for row in self.values]
self.columns = [[row[i] for row in self.values] for i in range(list(set([len(row) for row in self.values]))[0])]
def __setattr__(self, name, value):
if name not in ["rows", "columns"]:
self.__dict__[name] = value
elif hasattr(self, name):
#This is the part of code I'm trying to use to attempt updating self.values and self.columns at once, but it isn't even printing so I didn't bother writing any code for it
print name, value
else:
self.__dict__[name] = value
def __setitem__(self, index, value):
print index, value
def __str__(self):
return str(self.values)
a = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a.columns[1] = [4, 4, 4]
print(a)
по-прежнему дает
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
, когда я хочу, чтобы он дал мне [[1, 4, 3], [4, 4, 6], [7, 4, 9]], но, конечно, обновление переменной columnsне имеют ничего общего с self.values (которая является исходной входной переменной), так как это похоже на наличие 2 совершенно разных переменных.Как связать их вместе, чтобы любые изменения из self.values обновлялись в self.columns и self.rows, а любые изменения из self.columns и self.rows обновляли self.values?