无法在python中调用类函数(TypeError:object()不带参数)

问题描述 投票:1回答:1

我有一节课:

 class MATRIX:

     # convenience function
     def getDimensions(self,M):
         r = len(M)
         c = len(M[0])
         return r,c

     def add(self,M1,M2):
         res = []
         r1,c1 = self.getDimensions(M1)
         r2,c2 = self.getDimensions(M2)
         if (r1 != r2) or (c1 != c2):
             print("dimensions not the same")
             return res

         for i in range(len(M1)):
             row=[]
             for j in range(len(M1[i])):
                 element=M1[i][j] + M2[i][j]
                 row.append(element)
             res.append(row)

    return res

简单的类,不保存状态,只有一个添加两个矩阵的函数。我是Python中OOP的初学者,所以,除非我错了,所有类函数都必须以self参数开头。

该函数被称为:

 Z = MATRIX.add(X,Y)

其中X和Y是矩阵

当我尝试这样做时,我收到以下错误:

 Traceback (most recent call last):
   File "temp.py", line 82, in <module>
Z = MATRIX(X,Y)
 TypeError: object() takes no parameters

在这种情况下:

 X = [[1,1,1], [2,2,2], [3,3,3]]
 Y = [[4,4,4], [5,5,5], [6,6,6]]

为什么会出现此错误?我该如何解决?

python python-3.x oop matrix
1个回答
4
投票

在使用其实例方法之前,需要像这样实例化类MATRIX

m = MATRIX()
z = m.add(X, Y)

但是如果没有实例数据,那么实例方法就没有多大意义了。在这种情况下,您可以使方法成为静态,而不必实例化该类以使用其方法:

class MATRIX:

    # Note that `self` parameter is removed, as it's no longer an
    # instance method.
    @staticmethod
    def add(M1,M2):
         return M1 + M2

z = MATRIX.add(X, Y)
© www.soinside.com 2019 - 2024. All rights reserved.