В экземпляре класса вы можете использовать значение, возвращаемое одним методом, в качестве параметра для вызова другого метода - PullRequest
0 голосов
/ 20 марта 2019
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)) .определитель ()» немного из этого. Мне нужно взять матрицу (которая представляет собой список списков, например [[1,2,3], [4,5,6]]), и выполнить метод «redu_matrix» 1 раз на столбец в матрице, и каждый раз метод «определитель (сам)» передает значение, возвращенное другим методом. Когда я запускаю его, он говорит, что «объект списка не имеет атрибута« определитель »», потому что я не могу передать «я» методу определителя, как я обычно это делаю -> «self.determinant (self)»

Любые предложения будут очень признательны

1 Ответ

0 голосов
/ 20 марта 2019

In reduce_matrix:

  • создать M как M = A([row[:j-1] + row[j:] for row in temp])
  • не возвращать M.matrix, но M сам.

Тем не менее, numpy существует для всех видов матричных операций и многого другого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...