在类的实例中,您可以使用从一个方法返回的值作为调用另一个方法的参数吗?

时间:2019-03-20 04:34:22

标签: python python-3.x class oop instance

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

您好,我刚刚开始OOP,所以我对使用方法的返回值代替“实例名称”(作为其他方法的“自我”传递)有疑问。

我包括了剩下的仅用于矩阵问题计算的代码,但我只关注“ self.reduce_matrix(1,j + 1))。determinant()” 一点。我需要一个矩阵(这是列表的列表,例如[[1,2,3],[4,5,6]]),并在矩阵中的每列执行1次“ reduce_matrix”方法,并且每次,“ determinant(self)”方法都会传入另一个方法返回的值。当我运行它时,它说“列表对象没有属性“行列式””,因为我无法像往常一样将“自我”传递给行列式方法->“ self.determinant(self)”

任何建议将不胜感激

1 个答案:

答案 0 :(得分:0)

reduce_matrix中:

  • M创建为M = A([row[:j-1] + row[j:] for row in temp])
  • 不返回M.matrix,而是返回M本身。

也就是说,numpy可以用于各种矩阵运算等等。