【问题标题】:Type Error takes 1 positional argument but 4 were given类型错误接受 1 个位置参数,但给出了 4 个
【发布时间】:2018-09-28 03:27:49
【问题描述】:

我目前正在为涉及矩阵实现的家庭作业编写此代码:

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 很陌生。

(说我需要为我的问题添加更多细节,所以忽略这个:dfjsdfasjdfasdjfasfajfkajsfkajsdfksakfjasdfkjasdfkasdfnasdfbafdbhsdfdfdfskfjdfjsfjsfsjafasjdfaskfgskadfakfaskdfaskfdalsfkasfdkalsdfkasldfksldfkasdfkasdflksdflaksfdlkasdflaks

【问题讨论】:

    标签: python-3.x typeerror


    【解决方案1】:

    这里的问题在于MySparseMatrix中的__init__函数;定义中有两个__init__ 函数,这意味着当您创建MySparseMatrix 对象时,它不会调用接受参数的__init__ 函数。

    要修复它,只需像这样删除第一个 __init__

    def __init__(self, n, m, t):
        self.n = n
        self.m = m
        self.t = t
        self.data = {}
    

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2020-03-08
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多