[Python-mx] Acerca de super / herencia

Noe Nieto nnieto at noenieto.com
Fri Nov 4 01:27:36 EDT 2016


Correcto. super() se encarga de recorrer de manera correcta el mro (method
resolution order).
 Es especialmente útil para herencia múltiple por que no te tienes que
preocupar a qué superclase pertenece cada método.

-- Noe

El 3 de noviembre de 2016, 19:26, Javier Parada <jparada_a at hotmail.com>
escribió:

> Hola amigos,
>
> Siguiendo con el aprendizaje con Python, estoy estudiando éste código y
> algo que no sé que hace es super, buscando información me encontré de todo
> tipo acerca de super y la herencia multiple en Python, pero una de las
> descripciones que me fue muy util para entender es esta:
>
> *super,* que es una función que sirve para acceder a atributos que
> pertenecen a una clase superior.
>
> y además también me enteré de la propiedad mro que es una lista donde se
> guarda digamos el orden en el que se ejecutan los métodos de las clases,
> estamos bien?.
>
> Así que regresando al código que estoy estudiando es este:
>
> class Login(QMainWindow):
>     def __init__(self):
>         super(Login, self).__init__()
>         print(Login.__mro__)
>         #print("__mro__:", [x.__name__ for x in Login.__mro__])
>         self.icon = QIcon()
>         self.icon.addPixmap(QPixmap("./Resource/Images/favicon.png"))
>         self.setWindowIcon(self.icon)
>         self.setupGui()
>         self.LoginGui()
>         self.database = Database()
>
>     def setupGui(self):
>         # Login Window
>         self.setMinimumSize(900, 650)
>         self.setMaximumSize(900, 650)
>         self.setWindowTitle("Inicia sesión | Sistema de Control Escolar")
>         self.setObjectName("ventana_principal")
>
> ésta es la salida de mro:
>
> (<class 'Application.Login.Login.Login'>, <class
> 'PyQt4.QtGui.QMainWindow'>, <class 'PyQt4.QtGui.QWidget'>, <class
> 'PyQt4.QtCore.QObject'>, <class 'sip.wrapper'>, <class
> 'PyQt4.QtGui.QPaintDevice'>, <class 'sip.simplewrapper'>, <class 'object'>)
>
> entonces con la información que leí y con la salida de mro, creo que aquí
> únicamente lo que el autor está haciendo es que llama a super porque la
> clase padre de de la clase Login es QMainWindow y entonces puede hacer uso
> de:
>
> self.setWindowIcon(self.icon)
> self.setMinimumSize(900, 650)
> self.setMaximumSize(900, 650)
> self.setWindowTitle("Inicia sesión | Sistema de Control Escolar")
> self.setObjectName("ventana_principal")
>
> estoy bien?, alguna observación?.
>
> Gracias por su tiempo.
> Saludos,
> Javier
>
> _______________________________________________
> Python-mx mailing list
> Python-mx at python.org
> https://mail.python.org/mailman/listinfo/python-mx
>
>


-- 
---
Noe Nieto
NNieto Consulting Services
M: nnieto at noenieto.com
W: http://noenieto.com
T:  @tzicatl <https://twitter.com/#%21/tzicatl>
Li: Perfil en LinkedIn <http://www.linkedin.com/profile/view?id=84300665>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-mx/attachments/20161103/706b3a73/attachment.html>


More information about the Python-mx mailing list