无法在python中调用类函数(TypeError:object()不带参数)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在python中调用类函数(TypeError:object()不带参数)相关的知识,希望对你有一定的参考价值。
我有一节课:
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]]
为什么会出现此错误?我该如何解决?
答案
在使用其实例方法之前,需要像这样实例化类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)
以上是关于无法在python中调用类函数(TypeError:object()不带参数)的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用默认的 React Google Maps 得到“TypeError:无法将类调用为函数”?
未捕获的 TypeError:无法将类作为函数调用 React
挂载钩子中的错误:“TypeError:没有'new'就不能调用类构造函数节点”