<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">El 4 de mayo de 2014, 19:36, Daπid <span dir="ltr"><<a href="mailto:davidmenhur@gmail.com" target="_blank">davidmenhur@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 dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-05-04 17:40 GMT+02:00 Chema Cortes <span dir="ltr"><<a href="mailto:pych3m4@gmail.com" target="_blank">pych3m4@gmail.com</a>></span>:<div class="">
<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Como es bastante tedioso andar comprobando los atributos y métodos que tiene un objeto para saber si cumple o no con determinado protocolo, la librería estándar facilita  una colección de clases base abstractas (ABC-Abstract Base Classes) para poder fijar las relaciones entre clases, bien derivando de estas clases abstractas, bien registrando nuevas clases abstractas en esta jerarquía (siempre de un modo virtual).</blockquote>


</div></div><br></div><div class="gmail_extra">Gracias por la explicación. Ahora entiendo la razón para usar ABC en lugar de ducktyping: son un certificado de que la clase incluye una serie de métodos.<br></div></div></blockquote>
<div><br></div><div>Bueno, certificar no certifican nada. Incluso si se pudiera comprobar que todo es correcto en el momento de registrar una subclase, nada impediría que se pudieran borrar los métodos y atributos más adelante.<br>
<br></div><div>La idea es poder indicar que una clase responde a determinados "mensajes", aunque no posea explícitamente los métodos para gestionarlos. Por ejemplo, se podría hacerlo todo desde el método __getattribute__. No hay introspección que pueda saber qué hace ahí.<br>
</div></div><br>-- <br>Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": <a href="http://ch3m4.org/blog" target="_blank">http://ch3m4.org/blog</a><br>Buscador Python Hispano: <a href="http://ch3m4.org/python-es" target="_blank">http://ch3m4.org/python-es</a>
</div></div>