#python #python-3.x #class #oop #instance
#python #python-3.x #класс #ооп #экземпляр
Вопрос:
class A:
def __init__(self, matrix=[]):
self.matrix = matrix
def dimension(self):
return len(self.matrix), len(self.matrix[0])
def reduce_matrix(self, i, j):
temp = self.matrix[:i-1] self.matrix[i:]
M = A([row[:j-1] row[j:] for row in temp])
return M
def determinant(self):
(nrows, ncols) = self.dimension()
if nrows != ncols:
return ("Cannot find determinant of non-square matrix.")
elif nrows == 1:
return self.matrix[0][0]
else:
M = A(sum([ ((-1)**j) * self.matrix[0][j] * self.reduce_matrix(1,
j 1).determinant() for j in range(ncols) ]))
return M
Здравствуйте, я только что запустил ООП, поэтому у меня есть вопрос относительно использования возвращаемого значения метода вместо «имени экземпляра», которое передается как «self» для какого-либо другого метода.
Я включил остальную часть кода, который просто выполняет вычисления для матричных задач, но я фокусируюсь только на «self.reduce_matrix(1, j 1)).determinant()» его части. Мне нужно взять матрицу (которая представляет собой список списков, например. [[1,2,3],[4,5,6]] ), и выполните метод «reduce_matrix» 1 раз для каждого столбца в матрице, и каждый раз метод «determinant(self)» передает значение, возвращаемое другим методом. Когда я запускаю его, он говорит, что «объект списка не имеет атрибута «determinant»», потому что я не могу передать «self» методу determinant, как я обычно делаю -> «self.determinant(self)»
Любые предложения будут высоко оценены
Комментарии:
1. Я действительно смущен этим вопросом. Вы отредактировали код в нем, чтобы устранить ошибку? На этом сайте вопросы должны работать не так. Во что бы то ни стало исправьте код в вашей собственной системе, но не меняйте вопрос, чтобы избавиться от ошибки, по поводу которой вы просили о помощи!
2. Извините, я просто подправил часть кода, с которой у меня не было проблем, потому что человек, который ответил ниже, указал, что я написал одну часть неправильно, поэтому я подумал, что людям будет понятнее, если я исправлю это.
Ответ №1:
В reduce_matrix
:
- создать
M
какM = A([row[:j-1] row[j:] for row in temp])
- возвращать не
M.matrix
, аM
само себя.
Тем не менее, numpy существует для всех видов матричных операций и многого другого.
Комментарии:
1. Большое вам спасибо, я даже не знал о библиотеках, пока вы просто не упомянули одну, и я посмотрел ее, что значительно упростило задачу.