[pyar] Eventos

Juan Pedro Fisanotti fisadev en gmail.com
Lun Jul 5 14:27:43 ART 2010


2010/7/5 Facundo Batista <facundobatista en gmail.com>:
> 2010/7/5 Nicolas Rebagliati <nicolas.rebagliati en aenima-x.com.ar>:
>
>> Hay alguna forma de implementar eventos en python al estilo .NET?
>
> ¿Qué son eventos al estilo .NET?
>
> Slds.
>
> --
> .    Facundo

Comento como son los eventos en C# .Net, asumo que él se refería a esto:

Ej: Persona, que dispara un evento cuando tiene ganas de ir al baño.

- Creas tu clase Persona.

- Creas un delegado OnGanasIrBaño, donde definís la firma de los
métodos con los cuales vas a poder adherir a ese delegado. En el
delegado decís que los métodos que quieran adherir a OnGanasIrBaño
deben recibir un único parámetro string, donde van a recibir la
descripción de lo que se quiere hacer en el baño.

- Definis un evento GanasIrBaño en la clase Persona, a partir del
delegado creado.

- En cualquier parte del código de tu clase, ahora podes disparar el
evento, llamandolo como si se tratase de un método.

- Luego cuando instancies una Persona, podes suscribir manejadores a
ese evento (métodos que respeten la estructura definida en el
delegado).

El código sería así:


public class Persona
{
    public delegate void OnGanasIrBaño(string necesidad);
    public event OnGanasIrBaño GanasIrBaño;

    public void Levantarse()
    {
        //dar ganas de ir al baño cuando se levanta
        this.GanasIrBaño("hacer pis");
    }
}

...

class MiPrograma
{
    public void UnMetodo()
    {
        Persona fisa = Persona();  //aca menti :P
        fisa.GanasIrBaño += new
Persona.OnGanasIrBaño(this.ManejadorGanasIrBaño);
        fisa.Levantarse();  //aca va a dispararse el evento
    }

    public void ManejadorGanasIrBaño(string necesidad)
    {
         //este va a ser el codigo que "maneje" el evento
         MessageBox.Show("quiere ir al baño a hacer " + necesidad);
    }
}

Asumo que en python lo normal sería hacerlo con callbacks, no?

-- 
fisa  -  Juan Pedro Fisanotti



More information about the pyar mailing list