[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