[Python-es] Extendiendo de dict

Chema Cortes pych3m4 en gmail.com
Mar Nov 1 08:37:45 EDT 2016


El lun., 31 oct. 2016 a las 16:13, Nicolas lino (<nicolaslino1 en gmail.com>)
escribió:

>
> Buenas.
>
> Tengo una duda. Estoy armando una clase, que extiende de dict, la idea es
> agregar una funcionalidad mas para editar el diccioario.
>
>
> class TestObject(dict):
>
>     def __init__(self, init={}):
>        dict.__init__(self, init)
>        self._setMessage()
>
>     def _setMessage(self):
>         self = self['message']
>
>
> La idea es tomar solo una parte del message en el init. El tema es que no
> se como hacer el override del objeto. el self = self['message'] no estaria
> funcionando para re escribir el objeto.
>
> Alguien sabe si es correcto lo que estoy queriendo hacer? O en que le
> estoy errando?
>

Contrariamente a la intiuición, los diccionarios se inicializan al crear la
instancia, en lo que sería el método __new__:

class TestObject(dict):

    def __new__(cls, init={}):
        message = init.pop("message", {})
        self = super().__new__(cls, init)
        self.message = message
        return self



>
>
> Muchas gracias.
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://blog.ch3m4.org <http://ch3m4.org/blog>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20161101/78dfc2ac/attachment.html>


Más información sobre la lista de distribución Python-es