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 originalclass Person():
hobbies = []
jeremy = Person()
bob = Person()
jeremy.hobbies.append('reading comics')
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 originalclass Person():
hobbies = []
def __init__(self):
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 originaldef choose_person(people):
points = [person.points for person in people]
total = sum(points)
rand = random.randint(0, total)
for i in xrange( len(points) ):
if rand > points[i]:
rand -= points[i]
continue
else:
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 (: