[Python-es] Chequear código python

Benito Rodríguez Arcos brarcos en gmail.com
Sab Nov 17 15:09:35 CET 2012


El 17/11/2012 14:11, "Quique Porta" <quiqueporta en gmail.com> escribió:

> Para saber si una clase hereda de otra, lo puedes averiguar con issubclass
> (http://docs.python.org/2/library/functions.html#issubclass).
>
> if issubclass(MyClase, MegaClase):
>     # codigo si se cumple
>
> Y luego para que deban reimplementar los métodos podrias hacer algo así:
>
> class MegaClase(objetc):
>
>     def metodo_1(self):
>          raise Exception("Debes de re-definir el metodo_1.")
>
>     def metodo_2(self):
>          raise Exception("Debes de re-definir el metodo_2.")
>
> O importando inspect
>
> y obteniendo el listado de los "members"
>
> inspect.getmembers(MyClase, predicate=inspect.ismethod)
>
> Te devolverá una lista.
>
> Lo puedes ver aquí:
> http://docs.python.org/2/library/inspect.html#inspect.getmembers
>
> Un Saludo.
>

Supongo que esto valdría, pero tendría que ejecutar el código que suben los
usuarios a la web....


>
> El 17 de noviembre de 2012 13:57, Benito Rodríguez Arcos <
> brarcos en gmail.com> escribió:
>
>> Hola a todos.
>>
>> 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.
>>
>> 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í.
>>
>> import MegaClase
>>
>> class MyClase(MegaClase):
>> def megaclase_method1(self):
>> print "pepe"
>>
>> def megaclase_method2(self):
>> return 1 + 2
>>
>> def myclase_method(self):
>>  return "dooo"
>>
>> ¿como prodía chequear que la clase que sube el usuario hereda de
>> MegaClase e implementa una serie de métodos?
>>
>> Gracias.
>>
>> -------
>> *Benito Rodriguez Arcos*
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121117/a8e3f08b/attachment.html>


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