[Python-es] Chequear código python

Quique Porta quiqueporta en gmail.com
Sab Nov 17 14:10:40 CET 2012


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.

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/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121117/6099f0a8/attachment.html>


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