我目前正在编写这个代码,用于执行涉及Matrix实现的作业:
class MyMatrix(object):
def __init__(self, n, m, t):
self.n = n
self.m = m
self.t = t
self.data = []
for i in range(0, self.n):
row = []
for i in range (0, self.m):
row.append(self.t())
self.data.append(row)
def set(self, i, j, v):
self.data[i][j] = v
def get(self, i, j):
self.data[i][j]
def __str__(self):
n = self.__class__.__name__ + "({})".format((self.n,self.m))
for i in range(0, self.n):
for j in range(0, self.m):
s += str(self.get(i,j)) + " "
s += "\n"
return s
class MySparseMatrix(MyMatrix):
def __init__(self):
def __init__(self, n, m, t):
self.n = n
self.m = m
self.t = t
self.data = {}
def set(self, i, j, v):
key = (i, j)
self.data[key] = v
def get(self, i,j):
key = (i, j)
return self.data.get(key, self.t())
我正在尝试打印:
tt = MySparseMatrix(int, 2, 2)
tt.set(0,0,11)
tt.set(0,1,5)
tt.set(1,0,2)
print(tt.get(0,1))
print("tt = ", tt)
但它给了我
TypeError: __init__() takes 1 positional argument but 4 were given
有关如何解决此错误的任何建议?我是Python的新手。
(说我需要在我的问题中添加更多细节,所以请忽略这一点:dfjsdfasjdfasdjfasfajfkajsfkajsdfksakfjasdfkjasdfkasdfnasdfbafdbhsdfdfdfskfjdfjsfjsfsjafasjdfaskfgskadfakfaskdfaskfdalsfkasfdkalsdfkasldfksldfkasdfkasdflksdflakfdlkasdfkdddkasdfkafd)
这里的问题是__init__
中的MySparseMatrix
函数;在定义中有两个__init__
函数,这意味着当你创建一个MySparseMatrix
对象时,它不会调用接受参数的__init__
函数。
要修复它,只需删除第一个__init__
:
def __init__(self, n, m, t):
self.n = n
self.m = m
self.t = t
self.data = {}