A grandes rasgos, lo que hacen es añadir mas metodos. Es lo mas perceptible. Por otro lado nos encontramos que el comportamiento de la clase cambia, sobretodo cuando juegas con metaclases.<div><br></div><div>No soy un experto en ello pero recomiendo leer:</div>
<div><a href="http://www.python.org/doc/newstyle/">http://www.python.org/doc/newstyle/</a></div><div><br></div><div>Andrei.<br><br><div class="gmail_quote">El 12 de abril de 2012 12:45, <a href="mailto:piranna@gmail.com">piranna@gmail.com</a> <span dir="ltr"><<a href="mailto:piranna@gmail.com">piranna@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p>Alguien me puede explicar las diferencias entre old-classes y new-classes? Porque aparte de que las nuevas tienen mas metodos no veo ninguna... :-(</p>
<p>Sent from my Android cell phone, please forgive the lack of format on the text, and my fat thumbs :-P</p>
<div class="gmail_quote">El 12/04/2012 10:31, "Andrey Antoukh" <<a href="mailto:andsux@gmail.com" target="_blank">andsux@gmail.com</a>> escribió:<div><div class="h5"><br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Solución a eso: no uses twisted \o/ ( ahí solté mi primer troll del día )<br><br><div class="gmail_quote">El 12 de abril de 2012 10:26, Manuel de la Peña <span dir="ltr"><<a href="mailto:etil15@gmail.com" target="_blank">etil15@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><p><br>
On Apr 12, 2012 10:17 AM, "Vicente Ruiz" <<a href="mailto:vruiz2.0@gmail.com" target="_blank">vruiz2.0@gmail.com</a>> wrote:<br>
><br>
> Yo seguía con el ejemplo de Miguel Angel en la cabeza :D<br>
></p>
</div><p>Es que yo como Andrei, nada de old class, menos en twisted :(</p><div><div>
<p>> El 12 de abril de 2012 10:10, Manuel de la Peña <<a href="mailto:etil15@gmail.com" target="_blank">etil15@gmail.com</a>> escribió:<br>
><br>
>> Estaba asumiendo que se extendida de object como mínimo :)<br>
>><br>
>> On Apr 12, 2012 9:30 AM, "Vicente Ruiz" <<a href="mailto:vruiz2.0@gmail.com" target="_blank">vruiz2.0@gmail.com</a>> wrote:<br>
>>><br>
>>> Coincido con Andrei :)<br>
>>><br>
>>> En cuanto a lo que comentas, Manuel, no puedes llamar al padre usando old-style, la que estarías mezclando objetos y tipos. Para mantener la interfaz de getattr funciona así:<br>
>>><br>
>>> class EasyDict:<br>
>>> def __init__(self):<br>
>>> self._values = {}<br>
>>><br>
>>> def add(self, k, v):<br>
>>> self._values[k] = v<br>
>>><br>
>>> def __getattr__(self, name):<br>
>>> if name in self._values:<br>
>>> return self._values[name]<br>
>>> raise AttributeError<br>
>>><br>
>>> def __str__(self):<br>
>>> return str(self._values)<br>
>>><br>
>>> y creo que te referías a este otro cuando hablas de llamar al padre:<br>
>>><br>
>>> class EasyDict(dict):<br>
>>> def add(self, k, v):<br>
>>> self[k] = v<br>
>>><br>
>>> def __getattr__(self, name):<br>
>>> try:<br>
>>> return super(EasyDict, self).__geattr__(name)<br>
>>> except AttributeError:<br>
>>> if name in self:<br>
>>> return self[name]<br>
>>> raise AttributeError<br>
>>><br>
>>> al estar extendiendo un diccionario propiamente dicho, aquí si puedes hacer la llamada al padre.<br>
>>><br>
>>> Un saludo,<br>
>>> Vicente Ruiz<br>
>>><br>
>>> El 12 de abril de 2012 09:23, Andrey Antoukh <<a href="mailto:andsux@gmail.com" target="_blank">andsux@gmail.com</a>> escribió:<br>
>>>><br>
>>>> Usar oldclass hoy en día debe ser un crimen penal! xD<br>
>>>><br>
>>>> Andrei. ;)<br>
>>>><br>
>>>> El 12 de abril de 2012 09:13, Manuel de la Peña <<a href="mailto:etil15@gmail.com" target="_blank">etil15@gmail.com</a>> escribió:<br>
>>>><br>
>>>>><br>
>>>>> On Apr 12, 2012 8:54 AM, "Vicente Ruiz" <<a href="mailto:vruiz2.0@gmail.com" target="_blank">vruiz2.0@gmail.com</a>> wrote:<br>
>>>>> ><br>
>>>>> > Hola Miguel Ángel,<br>
>>>>> ><br>
>>>>> > es una pregunta muy buena :) La verdad es que me ha costado un rato dar con el problema. Prueba cambiar esto:<br>
>>>>> ><br>
>>>>> > class EasyDict: --> class EasyDict(object):<br>
>>>>> ><br>
>>>>> > Esto se debe a que en las versiones anteriores a Python 3.x existen 2 tipos de clases: new-style y old-style. Esto desaparece en Python 3, siendo todas new-style. Puedes leer más sobre el tema aquí: <a href="http://docs.python.org/reference/datamodel.html#new-style-and-classic-classes" target="_blank">http://docs.python.org/reference/datamodel.html#new-style-and-classic-classes</a><br>
>>>>> ><br>
>>>>> > Un saludo,<br>
>>>>> > Vicente Ruiz<br>
>>>>><br>
>>>>> Buenas,<br>
>>>>><br>
>>>>> Acá van mis 2c, la implementación no es totalmente correcta ya que tiene los siguientes fallos:<br>
>>>>><br>
>>>>> 1. Estas devolviendo None cuando el valor no está en el dict. Esto rompe la interfaz de getattr, lo correcto sería lanzar la excepción AtributeError.<br>
>>>>> 2. No estas llamando al getattr del parental class cosa que es probablemente recomendable, yo haría algo como:<br>
>>>>><br>
>>>>> def __getattr__(self, name):<br>
>>>>> try:<br>
>>>>> return super(Easydict, self).__geattr__(name)<br>
>>>>> except AttributeError:<br>
>>>>> if name in self.dict:<br>
>>>>> return self.dict [name]<br>
>>>>> raise AttributeError<br>
>>>>><br>
>>>>> Creo recordar que si era un new class puedes usar super de está forma, pero no lo he probado por que estoy en el metro : P.<br>
>>>>><br>
>>>>> Saludos<br>
>>>>><br>
>>>>><br>
>>>>> ><br>
>>>>> > El 12 de abril de 2012 08:25, Kiko <<a href="mailto:kikocorreoso@gmail.com" target="_blank">kikocorreoso@gmail.com</a>> escribió:<br>
>>>>> ><br>
>>>>> >><br>
>>>>> >><br>
>>>>> >> El 12 de abril de 2012 07:58, Miguel Angel <<a href="mailto:miguelangel.garcia@gmail.com" target="_blank">miguelangel.garcia@gmail.com</a>> escribió:<br>
>>>>> >><br>
>>>>> >>> Hola!<br>
>>>>> >>><br>
>>>>> >>> Tengo un problema y no sabía muy bien dónde preguntar... No sé si esta lista se utiliza sólo para las reuniones o las preguntas también tienen cabida. <br>
>>>>> >><br>
>>>>> >><br>
>>>>> >> A priori no hay ningún problema con las preguntas pero la finalidad de esta lista es un poco de organización de python-madrid, las quedadas y cosas así.<br>
>>>>> >><br>
>>>>> >> Seguro que muchos de esta lista te podrán responder pero para el futuro es más adecuado que para las dudas técnicas de python acudas a:<br>
>>>>> >><br>
>>>>> >> -la lista python-es (<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a>).<br>
>>>>> >> -a python.majibu (<a href="http://python.majibu.org/" target="_blank">http://python.majibu.org/</a>)<br>
>>>>> >><br>
>>>>> >> Donde hay mucha más gente que en esta lista y cuyo objetivo es ese, resolver dudas técnicas<br>
>>>>> >><br>
>>>>> >> Saludos.<br>
>>>>> >><br>
>>>>> >> -- <br>
>>>>> >> Grupo de usuarios de python ubicados en Madrid<br>
>>>>> >> <a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
>>>>> >> <a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
>>>>> >> <a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
>>>>> >> Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
>>>>> ><br>
>>>>> ><br>
>>>>> ><br>
>>>>> ><br>
>>>>> > -- <br>
>>>>> > Disponible en:<br>
>>>>> ><br>
>>>>> > <a href="http://www.vicenteruiz.es/" target="_blank">http://www.vicenteruiz.es/</a><br>
>>>>> > <a href="http://www.menudoproblema.es/" target="_blank">http://www.menudoproblema.es/</a><br>
>>>>> > Twitter - LinkedIn<br>
>>>>> ><br>
>>>>> > -- <br>
>>>>> > Grupo de usuarios de python ubicados en Madrid<br>
>>>>> > <a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
>>>>> > <a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
>>>>> > <a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
>>>>> > Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
>>>>><br>
>>>>> -- <br>
>>>>> Grupo de usuarios de python ubicados en Madrid<br>
>>>>> <a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
>>>>> <a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
>>>>> <a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
>>>>> Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> -- <br>
>>>> Andrei Antoukh - <<a href="mailto:niwi@niwi.be" target="_blank">niwi@niwi.be</a>><br>
>>>> <a href="http://www.niwi.be/page/about/" target="_blank">http://www.niwi.be/page/about/</a><br>
>>>> <a href="http://www.kaleidos.net/A5694F/" target="_blank">http://www.kaleidos.net/A5694F/</a><br>
>>>><br>
>>>> "Linux is for people who hate Windows, BSD is for people who love UNIX"<br>
>>>> "Social Engineer -> Because there is no patch for human stupidity"<br>
>>>><br>
>>>> -- <br>
>>>> Grupo de usuarios de python ubicados en Madrid<br>
>>>> <a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
>>>> <a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
>>>> <a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
>>>> Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> -- <br>
>>> Disponible en:<br>
>>><br>
>>> <a href="http://www.vicenteruiz.es/" target="_blank">http://www.vicenteruiz.es/</a><br>
>>> <a href="http://www.menudoproblema.es/" target="_blank">http://www.menudoproblema.es/</a><br>
>>> Twitter - LinkedIn<br>
>>><br>
>>> -- <br>
>>> Grupo de usuarios de python ubicados en Madrid<br>
>>> <a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
>>> <a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
>>> <a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
>>> Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
>><br>
>> -- <br>
>> Grupo de usuarios de python ubicados en Madrid<br>
>> <a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
>> <a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
>> <a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
>> Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
><br>
><br>
><br>
><br>
> -- <br>
> Disponible en:<br>
><br>
> <a href="http://www.vicenteruiz.es/" target="_blank">http://www.vicenteruiz.es/</a><br>
> <a href="http://www.menudoproblema.es/" target="_blank">http://www.menudoproblema.es/</a><br>
> Twitter - LinkedIn<br>
><br>
> -- <br>
> Grupo de usuarios de python ubicados en Madrid<br>
> <a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
> <a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
> <a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
> Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
</p>
<p></p>
-- <br>
Grupo de usuarios de python ubicados en Madrid<br>
<a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
<a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
<a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Andrei Antoukh - <<a href="mailto:niwi@niwi.be" target="_blank">niwi@niwi.be</a>><br><a href="http://www.niwi.be/page/about/" target="_blank">http://www.niwi.be/page/about/</a><br>
<a href="http://www.kaleidos.net/A5694F/" target="_blank">http://www.kaleidos.net/A5694F/</a><br><br>"Linux is for people who hate Windows, BSD is for people who love UNIX"<br>"Social Engineer -> Because there is no patch for human stupidity"<br>
<p></p>
-- <br>
Grupo de usuarios de python ubicados en Madrid<br>
<a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
<a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
<a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
</blockquote></div></div></div><div class="HOEnZb"><div class="h5">
<p></p>
-- <br>
Grupo de usuarios de python ubicados en Madrid<br>
<a href="http://groups.google.es/group/python-madrid" target="_blank">http://groups.google.es/group/python-madrid</a><br>
<a href="http://python-madrid.es" target="_blank">http://python-madrid.es</a><br>
<a href="http://twitter.com/#!/python_madrid" target="_blank">http://twitter.com/#!/python_madrid</a><br>
Para darte de baja del grupo envía un mensaje a <a href="mailto:python-madrid%2Bunsubscribe@googlegroups.com" target="_blank">python-madrid+unsubscribe@googlegroups.com</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Andrei Antoukh - <<a href="mailto:niwi@niwi.be" target="_blank">niwi@niwi.be</a>><br><a href="http://www.niwi.be/page/about/" target="_blank">http://www.niwi.be/page/about/</a><br>
<a href="http://www.kaleidos.net/A5694F/" target="_blank">http://www.kaleidos.net/A5694F/</a><br><br>"Linux is for people who hate Windows, BSD is for people who love UNIX"<br>"Social Engineer -> Because there is no patch for human stupidity"<br>
</div>
<p></p>
-- <br />
Grupo de usuarios de python ubicados en Madrid<br />
<a href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br />
<a href="http://python-madrid.es">http://python-madrid.es</a><br />
<a href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br />
Para darte de baja del grupo envía un mensaje a python-madrid+unsubscribe@googlegroups.com<br />