Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/05/2012, 07:40
Avatar de _cronos2
_cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 6 meses
Puntos: 310
Sobre clases y random

Buenos días amigos! Hoy traigo dos preguntas, una sobre clases y otra sobre el módulo random. La primera ya me había surgido hace tiempo pero como pude solucionarlo no le di importancia. Supongamos que tengo una clase Person como esta:
Código Python:
Ver original
  1. class Person():
  2.     hobbies = []
  3.  
  4. jeremy = Person()
  5. bob = Person()
  6. jeremy.hobbies.append('reading comics')
  7. bob.hobbies # ['reading comics']
El problema está en que la propiedad hobbies es la misma para todas las instancias de la clase. Para solucionarlo hago esto:
Código Python:
Ver original
  1. class Person():
  2.     hobbies = []
  3.    
  4.     def __init__(self):
  5.         self.hobbies = self.hobbies[:] # actual copy
Sin embargo no sé si esta es la solución más correcta/ortodoxa, ni por qué es necesario hacerlo.
La segunda pregunta está relacionada con el módulo random. Ahora por ejemplo cada persona tiene una puntuación, y quiero elegir un aleatoriamente teniendo más probabilidades de salir la que más puntos tenga. Hasta ahora estoy haciéndolo así:
Código Python:
Ver original
  1. def choose_person(people):
  2.     points = [person.points for person in people]
  3.     total = sum(points)
  4.     rand = random.randint(0, total)
  5.    
  6.     for i in xrange( len(points) ):
  7.         if rand > points[i]:
  8.             rand -= points[i]
  9.             continue
  10.         else:
  11.             return people[i]
La pregunta es, ¿existe algún método en el módulo random que haga esto mismo?
Espero vuestras respuestas.
Saludos y gracias de antemano (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red