错误模块.__ init __()在Python中最多需要2个参数错误

时间:2018-04-17 03:50:20

标签: python compiler-errors

我有3个课程:Nodo.py,Lista.py和ListaEnlazada.py

Nodo的代码是:

class Nodo:
def __init__(self, dato=None , nodo = None): #@Method
    self._dato = dato
    self._siguiente = nodo
def setDato(self, dato): #@Method
    self._dato = dato
def getDato(self): #@Method
    return self._dato
def setSiguiente(self,nodo): #@Method
    self._siguiente = nodo
def getSiguiente(self): #@Method
    return self._siguiente

Lista的代码是:

class Lista:        
def __init__(self): #@Method
    self._tamanio=0
def elemento(self,pos): #@Method
    pass
def agregar(self,elem,pos): #@Method
    pass
def eliminar(sel,pos): #@Method
    pass

最后,ListaEnlazada的代码是:

import Nodo
import Lista

class ListaEnlazada(Lista):
def __init__(self): #@Method
    Lista.__init__(self)
    self.__inicio =  None
def esVacia(self): #@Method
    return self.__inicio == None        
def elemento(self,pos): #@Method
    pos = pos-1
    if(self.__inicio == None):
        return  None
    else:
        aux = self.__inicio
        while(aux.getSiguiente() != None and 0<=pos):
            aux = aux.getSiguiente()
            pos -=1
        return aux.getDato()    
def agregar(self,elem,pos): #@Method
    nuevo = Nodo(elem,None)
    if(self.__inicio == None):
        self.__inicio = nuevo
    else:
        aux = self.__inicio
        while(aux.getSiguiente() != None):
            aux = aux.getSiguiente()
        aux.setSiguiente(nuevo)
    self._tamanio +=1        
def eliminar(self,pos): #@Method
    cont = 0
    if(cont == pos):
        self.__inicio = self.__inicio.getSiguiente()
        self._tamanio -=1
    else:
        aux = self.__inicio
        while(True):
            cont += 1
            if(cont==pos):
                aux2 = aux.getSiguiente()
                aux.setSiguiente(aux2.getSiguiente())
                break
            aux = aux.getSiguiente()                
            if(pos<cont):
                print ("fuera de  rango")

当我编译ListaEnlazada时,得到下一个错误:

  

TypeError:module。 init ()最多需要2个参数(给定3个)

问题是什么以及如何解决?

谢谢!

1 个答案:

答案 0 :(得分:2)

您已经将模块和类命名为同一个东西,并且您正在尝试从模块继承一个类,而不是从模块包含的类继承。

继承自班级:

class ListaEnlazada(Lista.Lista):
    ...

并停止编写类似Java的Python。如果你真的想把每个类都放在自己的模块中,至少将模块命名为小写,这是Python中的标准惯例。混淆listaLista比混淆Lista和其他Lista更难。