我有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个)
问题是什么以及如何解决?
谢谢!
答案 0 :(得分:2)
您已经将模块和类命名为同一个东西,并且您正在尝试从模块继承一个类,而不是从模块包含的类继承。
继承自班级:
class ListaEnlazada(Lista.Lista):
...
并停止编写类似Java的Python。如果你真的想把每个类都放在自己的模块中,至少将模块命名为小写,这是Python中的标准惯例。混淆lista
和Lista
比混淆Lista
和其他Lista
更难。