Foros del Web » Programando para Internet » Python »

Una duda pequeña con Python + GTK

Estas en el tema de Una duda pequeña con Python + GTK en el foro de Python en Foros del Web. Buenas, estuve leyendo algunos manuales sobre Python y GTK, y tengo algunas dudas: El ejemplo en cuestion es sacar una ventana con un boton y ...
  #1 (permalink)  
Antiguo 13/02/2009, 18:03
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Una duda pequeña con Python + GTK

Buenas, estuve leyendo algunos manuales sobre Python y GTK, y tengo algunas dudas:

El ejemplo en cuestion es sacar una ventana con un boton y que al hacer click al boton salga un mensaje por el terminal

El ejemplo en si lo entiendo, lo que pasa es que quiero utilizar el Patron Comando

El codigo sin patrones es masomenos asi

fichero: hola.py

Código:
import ...
...

class HolaMundo:
...

      def hola (self, widget, data=None):
          print "Hola mundo"
 
      ....
 
      def __init__ (self):
          # crear ventana
          # crear boton
          self.boton.connect ("clicked", self.hola, None) # conectando evento clicked al boton
          ...
 
          ...
Bien, como os dije ese ejemplo funciona y lo entiendo.

Como seria usando el patron Comando ?

Implemente una clase comando.py para simular esto pero no se si esta bien (aunque funciona):

fichero comando.py

Código:
class ComandoClick:
      def __call__ (self, *args):
          print "Hola Mundo"
y luego
fichero: hola.py

Código:
import ...

from comando import ComandoClick  # Importamos la clase (es esto la relacion cliente ??)

class HolaMundo:
      ...
      ....
 
      def __init__ (self):
          # crear ventana
          # crear boton
          
          self.click = ComandoClick()
         self.boton.connect ("clicked", self.click) # conectando evento clicked al boton
          ...
 
          ...
Esa solucion funciona, pero tengo unas dudad:

1. lo de "from comando import ComandoClick" es una forma de usar la relacion cliente ?
2. No entiendo bien lo de "def __call__ (self, *args)"
3. Estoy usando el patron Comando el la solucion que he dado ?

Gracias
  #2 (permalink)  
Antiguo 14/02/2009, 06:48
 
Fecha de Ingreso: octubre-2004
Ubicación: COLOMBIA
Mensajes: 240
Antigüedad: 20 años, 1 mes
Puntos: 3
De acuerdo Respuesta: Una duda pequeña con Python + GTK

Cita:
Iniciado por kurt256 Ver Mensaje
Esa solucion funciona, pero tengo unas dudad:

1. lo de "from comando import ComandoClick" es una forma de usar la relacion cliente ?
2. No entiendo bien lo de "def __call__ (self, *args)"
3. Estoy usando el patron Comando el la solucion que he dado ?

Gracias
1) Lo que estás haciendo es importar la clase y todo sus métodos para ser usados en el nuevo módulo
2) def __call__ (self, *args) es un método que se ejecutará cuando utilices el self.click, 'self' es siempre un parámetro por regla general en python para los métodos de clase, el parámetro '*args' quiere decir que esta función puede recibir varios argumentos.
3) Estás llamandolo desde self.click = ComandoClick() en la instanciación de parámetros.

Si hay algo que no entiendas pregunta
__________________
Revista Código Latino
SoloCodigo
  #3 (permalink)  
Antiguo 14/02/2009, 09:33
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Una duda pequeña con Python + GTK

Gracias por responder.

1)Se que estoy importando la clase y todos sus metodos (es obvio), pero quiero saber si es eso una forma de usar la Relacion Cliente (Usar la Relacion Herencia seria por ejemplo:
class ClaseHija (ClasePadre): ,,, ) o no, o es un simple #include (o parecido) de C

2)Se que __call__ se ejecutara al hacer self.click() pero , por qué por ejemplo si en lugar de llamarse __call__ lo lo llamo activar(), no da el mismo resultado (lo he probado y me da como error: "TypeError: second argument must be callable")

3)Entonces si es el patron comando, gracias


S2
  #4 (permalink)  
Antiguo 14/02/2009, 09:47
 
Fecha de Ingreso: octubre-2004
Ubicación: COLOMBIA
Mensajes: 240
Antigüedad: 20 años, 1 mes
Puntos: 3
Información Respuesta: Una duda pequeña con Python + GTK

Cita:
Iniciado por kurt256 Ver Mensaje
Gracias por responder.

1)Se que estoy importando la clase y todos sus metodos (es obvio), pero quiero saber si es eso una forma de usar la Relacion Cliente (Usar la Relacion Herencia seria por ejemplo:
class ClaseHija (ClasePadre): ,,, ) o no, o es un simple #include (o parecido) de C

2)Se que __call__ se ejecutara al hacer self.click() pero , por qué por ejemplo si en lugar de llamarse __call__ lo lo llamo activar(), no da el mismo resultado (lo he probado y me da como error: "TypeError: second argument must be callable")

3)Entonces si es el patron comando, gracias


S2
1) No, no heredas nada, solamente estás llamando el módulo, correcto lo que dices es como el #include de C

2) __call__ es una función propia de las clases; se utiliza para que el objeto pueda ser llamado (como una función), de modo que si tenemos una instancia x que define __call__(self, valor) podemos hacer x(valor), lo que en realidad es un atajo a x.__call__(valor).
Extraido de juanjoalvarez
__________________
Revista Código Latino
SoloCodigo
  #5 (permalink)  
Antiguo 14/02/2009, 10:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Una duda pequeña con Python + GTK

Ok gracias
  #6 (permalink)  
Antiguo 20/05/2009, 10:19
Avatar de Miuler  
Fecha de Ingreso: noviembre-2003
Mensajes: 7
Antigüedad: 21 años
Puntos: 0
Respuesta: Una duda pequeña con Python + GTK

__call__ es un metodo especial, puedes ver más de ellos en:

http juanjoalvarez.net/?q=pythonmetodosespeciales
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:19.