[Tutor] class attribute to initiate more classes
Kent Johnson
kent37 at tds.net
Sat Oct 31 14:14:05 CET 2009
On Sat, Oct 31, 2009 at 1:01 AM, Vincent Davis <vincent at vincentdavis.net> wrote:
> I have a program that generates many instances of a class with an attribute
> self.x = random.gauss(10, 2). So each instance has a different value for
> self.x. This is what I want. Now I want to make a class that starts my
> program and sets the attributes.
> class people:
> def __init__(self, size)
> self.size = size
> class makepeople:
> def __init__(self, randomsize)
> self.rsize = randomsize
> self.allpeople = []
> def makethem():
> for x in range(1,100):
> p+str(x) = people(self.rsize)
> allpeople.append(p+str(x))
> so what I would like to have work is set the attribute of makepeople so that
> when it is used to make instances of people each will have a different size.
> listofp = makepeople(random.guass(100, 2))
Here you are calling makepeople() and passing it a single random
number that will be used for all people. You need to call
random.gauss() in the loop.
> listofp.makethem()
> I would then what listofp.allpeople to be a list of people with different
> sizes. The above code does not work, I don't think it does anyway.
> I hope this makes sense, I am sure there is a term for what I am trying to
> do but I don't know it.
I would just make a function that creates the list of people. There is
no need to put it in a class. For example,
def make_people():
return [people(random.gauss(100,2)) for x in range(1, 100)] # Note
this only makes 99 people
Kent
More information about the Tutor
mailing list