Python - Instanciar varios objetos de una misma clase

   
Vista:

Instanciar varios objetos de una misma clase

Publicado por José Alberto (2 intervenciones) el 20/02/2016 04:00:30
Hola a todos

Estoy haciendo un miniprograma en python que es un reloj de cuenta atrás y que cuando termina muestra una ventana con un texto determinado. He creado una clase que es el reloj que hace toda la cuenta atrás y muestra el mensaje, aunque no estoy seguro si ésto es correcto hacerlo así.
Quisiera saber si es posible instanciar distintos objetos de esta clase es decir, poder tener a la vez distintas alarmas corriendo a la vez con distintos textos.
La verdad que no se mucho de clases aun y estoy empezando con esto, por eso no estoy seguro si está bien cómo lo estoy haciendo o no. En fin, cualquier cosa me va a ayudar. Gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Instanciar varios objetos de una misma clase

Publicado por xve (1235 intervenciones) el 20/02/2016 18:55:26
Hola José, no entiendo muy bien a que te refieres.... si quieres que vayan dos proceso simultaneos en funcionamiento, tendras que utilizar hilos (threads) aunque no creo que sea eso exactamente lo que quieres...

Nos puedes mostrar como lo estas haciendo ahora con una clase?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Instanciar varios objetos de una misma clase

Publicado por alberto (2 intervenciones) el 29/02/2016 19:47:45
Hola
Perdón por la demora pero es que se me han complicado las semanas últimamente y no me he puesto con nada de esto.
A ver, el código básico para la alarma es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys, time, os
 
m=int (raw_input('Ingrese los minutos: '))
x=0
s=0
 
if x==m:
	os.system('zenity --info --text="Tiempo agotado"')
 
else:
	while x!=m :
		if s==60:
			s=0
			x+=1
		os.system('clear')
		print(str(x)+':'+str(s))
		s += 1
		time.sleep(1)
	os.system('zenity --info --text="Tiempo agotado"')

Ésto lo que me hace es que me hace es aparecer una ventana en la patalla cuando el tiempo se ha agotado. Luego le hice alguna modificación para que me pidiera qué texto mostrar y eso pero vamos, no es nada del otro mundo esto último. Luego pensé que en realidad estaría bien poder poner dos o tres o n... alarmas conforme las fuese necesitando, así que le añadí un poco más de código en el que se crea un menú que da a elegir si quieres otra alarma nueva o salir. Y aquí es donde se me complicó la cosa. Pensé que, creando una clase, podía instanciarla las veces que yo quisiera, pero no sabía cómo, pues a la clase hay que llamarla desde algún sitio y no se pueden llamar igual los sitios o las variables iguales, así que nada, ahí me bloqueé. Pongo el código pero advierto que tendrá errores seguro, pues no lo he vuelto a tocar y está mal porque aun no domino las clases (sinceramente, hay momentos en los que no entiendo para qué sirven bien las clases).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Alerta(object):
	def __init__(self, minutos, texto):
		self.minutos=minutos
		self.texto=texto
 
	def contador(self):
		x=0
		s=0
		if x==self.minutos:
			os.system('zenity --info --text="Tiempo agotado"')
 
		else:
			while x!=self.minutos:
				if s==60:
					s=0
					x+=1
				#os.system('clear')
				print(str(x)+':'+str(s))
				s += 1
				time.sleep(1)
			os.system('zenity --info --text="Tiempo agotado"')
 
op=1
 
while op!=0:
	os.system('clear')
	print('\tOPCIONES\n')
	print('\t\t0 ---> SALIR')
	print('\t\t1 ---> ALERTA')
 
	op=int(raw_input('\nElija una opción: '))
 
	if op==1:
		m=int (raw_input('Ingrese los minutos: '))
		t= raw_input('Ingrese el texto a mostrar: ')
 
		alarm= Alerta(m,t)
 
os.system('clear')

Básicamente lo que quiero es: que aparezca el menú, elegir que quiero una alarma, que se ponga a correr la alarma y, si en cualquier momento necesito otra mientras corre la primera, darle a la opción del menú para que me cree otra alarma y así.... No se si me he explicado bien.
En fin, si alguien me puede echar un cable con esto, se lo agradecería. Ciao
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar