creating and naming objects
Diez B. Roggisch
deets at nospam.web.de
Wed Jun 7 12:25:14 EDT 2006
Brian wrote:
> I have a question that some may consider silly, but it has me a bit
> stuck and I would appreciate some help in understanding what is going
> on.
>
> For example, lets say that I have a class that creates a student
> object.
>
> Class Student:
> def setName(self, name)
> self.name = name
> def setId(self, id)
> self.id = id
>
> Then I instantiate that object in a method:
>
> def createStudent():
> foo = Student()
> /add stuff
>
> Now, suppose that I want to create another Student. Do I need to name
> that Student something other than foo? What happens to the original
> object? If I do not supplant the original data of Student (maybe no id
> for this student) does it retain the data of the previous Student
> object that was not altered? I guess I am asking how do I
> differentiate between objects when I do not know how many I need to
> create and do not want to hard code names like Student1, Student2 etc.
>
> I hope that I am clear about what I am asking.
You seem to confuse the terms class and instance. An object is the instance
of a class. You can have as many Students as you like. You just have to
keep a reference around for retrieval. E.g.
students = [Student("student %i" % i) for i in xrange(100)]
will create a list of 100 (boringly named) students.
The
foo = Student("foo")
will create a Student-object and the name foo refers to it. You are free to
rebind foo to another Student or something completely different.
foo = Student("foo")
foo = 10
When you do so, and no other references to the Student-objects are held, it
will actually disappear - due to garbage collection.
Diez
More information about the Python-list
mailing list