2016-02-27 2 views
-4

enter image description herePython __init __() занимает 1-позиционное аргумент, но 3 были даны

enter image description here

Я написал класс матрицы для моего назначения.

class Matrix(): 
'''A class to represent a mathematical matrix''' 

    def __init__(self, m, n, default=0): 
     '''(Matrix, int, int, float) -> NoneType 
     Create a new m x n matrix with all values set to default 
     ''' 
     self._head = MatrixNode(None) 
     self._m = m 
     self._n = n 
     self._default = default 

Однако во время тестирования произошла ошибка.

if __name__ == '__main__': 
    m1 = Matrix(3,3) 
    print(m1.get_val(0, 0)) 
    m1.set_val(0,0, 3) 
    m1.set_val(2, 2, 5) 

Произошла ошибка.

Traceback (most recent call last): 
    File "/Users/Xueli/Desktop/a1.py", line 336, in <module> 
    m1 = Matrix(3,3) 
builtins.TypeError: __init__() takes 1 positional argument but 3 were given 

Я действительно не получаю этот отчет об ошибке.

+0

Копирование кода, исправление отступа ... код работает. – idjaw

+2

Это фактический отступ, который у вас есть в коде? – khelwood

+0

Отступы значительны для python. У вашего класса Matrix нет метода __init__, вместо этого у вас есть функция верхнего уровня __init__ – Daenyth

ответ

0
class Matrix(): 
    '''A class to represent a mathematical matrix''' 

    def __init__(self, m, n, default=0): 
     '''(Matrix, int, int, float) -> NoneType 
     Create a new m x n matrix with all values set to default 
     ''' 
     self._head = MatrixNode(None) 
     self._m = m 
     self._n = n 
     self._default = default 

Без надлежащего отступа def __init__() не распознается как class Matrix() конструктор. См. Вышеупомянутый модифицированный код.

Смежные вопросы