Red de conocimiento informático - Problemas con los teléfonos móviles - Se encontró TypeError al usar python super(): debe ser tipo, no classobj.

Se encontró TypeError al usar python super(): debe ser tipo, no classobj.

Primero en super(). __init__()

Este método de herencia sin especificar una subclase es una característica nueva de Python 3. Como está utilizando Python 2, informará un error.

En segundo lugar, con respecto a TypeError, defina dos clases principales, agregue sus clases principales (objetos) como se muestra a continuación y luego intente nuevamente, porque classobj en Python 2 no cuenta como un tipo, si no. No tengo este problema con Python 3. clase?Base1(objeto):

def?__init__(self):

imprimir?"Soy Base1"

clase?Base2(objeto):

def?__init__(self):

def? p>print?"Soy Base2"

Otra digresión, el interrogador usa la subclase Base Doble herencia, es decir, la clase secundaria tiene dos clases principales (Base1 y Base2), este método de herencia a veces causa confusión, es decir, si las dos clases principales tienen el mismo método o nombre de variable, no se puede determinar qué clase principal se debe heredar. Por tanto, lenguajes como Java no permiten la herencia múltiple. Python permite la herencia múltiple, pero en este caso, para evitar confusiones, Python selecciona y ejecuta automáticamente la primera clase principal con el nombre del método requerido en orden, ignorando los métodos con el mismo nombre en otras clases principales. Por ejemplo, tu clase?Base(Base1, Base2):

def?__init__(self):

super(Base, ?self).__init__()

Utilice super(Base,?self) en él. Debido a que Base tiene dos clases principales (Base1 y Base2), y ambas tienen métodos __init__, Python solo llama al método __init__ de Base1 de forma predeterminada e ignora el método __init__ de Base2. Entonces, cuando ejecutes bbbb?=?Base()

solo dirá Soy Base1

pero no "Soy Base2".

Base2.__init__(self)

Cuando genera "Soy Base1" y "Soy Base2" como en p>, debe modificar el código para que Base2 sea una subclase de Base1, que es una subclase de Base2. Como se muestra a continuación: clase?Base1(objeto):

def?__init__(self):

imprimir?"Soy Base1"

clase?Base2( Base1):

def?__init__(self):

super(Base2,?self).__init__()

imprimir?"Soy Base2"

clase?Base(Base2):

def?__init__(self):

super(Base,?self).__init__()

De esta manera, cuando ejecuta bbbbb?=?Base()

, generará Soy Base1

Soy Base2