El lun., 31 oct. 2016 a las 16:13, Nicolas lino (<nicolasli...@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@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>
_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es

Responder a