Derivacion condicional
Chema Cortes
pych3m4 en gmail.com
Jue Jul 12 15:23:33 CEST 2007
El 12/07/07, Oswaldo Hernández <listas en soft-com.es> escribió:
> El problema es cuando la decision se ha de realizar en la propia creación de la clase al evaluar los
> parametros.
Para ésto lo mejor sería usar metaclases. Pero...
> Esto funciona, pero lo que no consiguo es hacer una clase que haga la derivacion de a o b de forma
> automatica:
>
> class C(SelectClase(parametro)):
> pass
>
> aqui da error, puesto que 'parametro' no esta definido.
Aquí me he perdido. Sintácticamente está correcto, y el que no
encuentre el parámetro depende de la manera de pasarlo. ¿En qué
momento se realiza la decisión?
Intuyo que hay un problema de concepto: las clases se "crean" cuando
se definen, no cuando instancian. Si quieres que el tipo de cada
instancia se decida justo en el momento de su instanciación tendrás
emplear algún patrón "Factoría"; posiblemente, trasteando con el
método __new__ te resulte suficiente:
class C(object):
def __new__(cls,sel,*args,**kw):
if sel<100:
return A(*args,**kw)
else:
return B(*args,**kw)
assert isinstance(C(1),A)
assert isinstance(C(111),B)
Más información sobre la lista de distribución Python-es