Implementando un Dado

Beni camontuyu en yahoo.es
Vie Nov 23 11:23:00 CET 2007


On Nov 23, 2007 10:29 AM, tny <a.porrua en gmail.com> wrote:

>
> El vie, 23-11-2007 a las 09:19 +0100, Beni escribió:
> > Hola me gustaria encapsular alguna funcionalidad del modulo random en
> una
> > clase para simular la tirada de un dado, sería algo así:
> ...
> >     def tirada(min, max, cantidad=1, tipo=int):
> ...
> >         if type(int):
> ...
> >         elif type(float):
> ...
> no querrás decir type(tipo)=type(int) o algo de eso
>

Si llevas razón, mi código es:

if type(tipo) = int:
  ...
elif type(tipo) = float:
  ...


> Yo personalmente pasaría del tipo=int y haría tipo='int' o tipo=INT
> (siendo INT una constante)
>
> quedaría así
> ...
>    def tirada(min, max, cantidad=1, tipo='int'):
> ...
>        if tipo=='int':
> ...
>        elif tipo=='float':
> ...
>

Por que utilizar la comprobación de tipos con una cadena? es más eficiente?


>
> cuando haces dN=tirada(...) estas guardando en la variable dN el
> resultado de realizar un tirada
> puedes hacerlo de dos formas, con lambda y con __getattr__
>
> Suerte.


Lo del lambda, no se exactamente como encajaría aquí.

Lo del __getattr__ me parece estupendo, que sería algo así?

def __getattr__(name):
  if name == 'd4':
    return Dado.tirada(1,4)
  else:
    error

Se puede parsear el nombre para hacerlo más automático, extraer el N del
dado... pero sería algo así?

Se puede utilizar getattr como método estatico?
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


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