[Python-mx] Acerca de super / herencia

Cesar Cardenas Desales ccdesales+pythonmx at gmail.com
Fri Nov 4 01:38:53 EDT 2016


Lo que puedo agregar es que aunque frameworks como PyQT requieren que el
usuario utilice herencia, fuera de ese caso de uso en general se recomienda
usar composicion de objetos en vez de ello, ya que es muy facil abusar del
concepto de herencia y llegar a soluciones sub-optimas.

2016-11-04 3:26 GMT+01:00 Javier Parada <jparada_a at hotmail.com>:

> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-mx/attachments/20161104/615424d1/attachment.html>


More information about the Python-mx mailing list