<p>El 17/11/2012 14:11, "Quique Porta" <<a href="mailto:quiqueporta@gmail.com" target="_blank">quiqueporta@gmail.com</a>> escribió:<br></p><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Para saber si una clase hereda de otra, lo puedes averiguar con issubclass (<a href="http://docs.python.org/2/library/functions.html#issubclass" target="_blank">http://docs.python.org/2/library/functions.html#issubclass</a>).<div>
<br></div>
<div>if issubclass(MyClase, MegaClase):</div><div> # codigo si se cumple</div><div><br></div><div>Y luego para que deban reimplementar los métodos podrias hacer algo así:</div><div><br></div><div>class MegaClase(objetc):</div>
<div><br></div><div> def metodo_1(self):</div><div> raise Exception("Debes de re-definir el metodo_1.")<br><div><div><br></div><div> def metodo_2(self):</div><div> raise Exception("Debes de re-definir el metodo_2.")</div>
</div><div><br></div><div>O importando inspect</div><div><br></div><div>y obteniendo el listado de los "members"</div><div><br></div><div>inspect.getmembers(MyClase, predicate=inspect.ismethod)</div>
<div><br></div><div>Te devolverá una lista.</div><div><br></div><div>Lo puedes ver aquí: <a href="http://docs.python.org/2/library/inspect.html#inspect.getmembers" target="_blank">http://docs.python.org/2/library/inspect.html#inspect.getmembers</a></div>
<div><br></div><div>Un Saludo.</div></div></blockquote><div><br></div><div>Supongo que esto valdría, pero tendría que ejecutar el código que suben los usuarios a la web....</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><br><div class="gmail_quote">El 17 de noviembre de 2012 13:57, Benito Rodríguez Arcos <span dir="ltr"><<a href="mailto:brarcos@gmail.com" target="_blank">brarcos@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hola a todos.<div><br></div><div>Estoy haciendo una aplicación web donde los usuarios suben un código python. La he integrado con pylint para chequear la syntaxis. Pero me gustaría chequear otras propiedades del código, aparte de ésta.</div>
<div><br></div><div>Me explico, quiero que el código de los usuarios sea una clase que herede de otra y que los usuarios implementen una serie de métodos. Un ejemplo sería algo así.</div><div><br></div><div>import MegaClase</div>
<div><br></div><div>class MyClase(MegaClase):</div><div><span style="white-space:pre-wrap"> </span>def megaclase_method1(self):</div><div><span style="white-space:pre-wrap"> </span>print "pepe"</div><div>
<br></div><div><span style="white-space:pre-wrap"> </span>def megaclase_method2(self):</div><div><span style="white-space:pre-wrap"> </span>return 1 + 2</div><div><br></div><div><span style="white-space:pre-wrap"> </span>def myclase_method(self):</div>
<div><span style="white-space:pre-wrap"> </span>return "dooo"</div><div><br></div><div>¿como prodía chequear que la clase que sube el usuario hereda de MegaClase e implementa una serie de métodos?</div><div>
<br></div><div>Gracias.</div><div><br clear="all"><div><font face="tahoma, sans-serif">-------</font></div><b><font face="tahoma, sans-serif">Benito Rodriguez Arcos</font></b><br>
</div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br></div></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div>