Creating and Using Objects
Once we have a class definition, we can make objects which are
instances of that class. We do this by evaluating the class as if it
were a function:
classname
()
.
When we make one of these class calls (for example, Die()
),
two things will happpen.
- A new object is created. This object has a reference to its
class definition.
- The object's initializer method,
__init__
, is called. We'll look at how you
define this method function in th next section.
Let's create two instances of our Die
class.
>>>
d1= Die()
>>>
d2= Die()
>>>
print d1.roll(), d2.roll()
1 4
>>>
print d1.value, d2.value
1 4
>>>
print d1, d2
<__main__.Die instance at 0x30427c> <__main__.Die instance at 0x30477c>
>>>
d1.roll()
3
>>>
d2.roll()
6
We use the Die
class object to create two
variables, d1
, and d2
; both are
new objects, instances of Die
.
We evaluate the roll
method of
d1
; we also evaluate the roll
method of d2
. Each of these calls sets the object's
value
variable to a unique, random number. There's a
pretty good chance (1 in 6) that both values might happen to be the
same. If they are, simply call d1.roll
and
d2.roll
again to get new values.
We print the value
variable of each object. The
results aren't too surprising, since the value
attribute was set by the roll
method. This
attribute will be changed the next time we call the
roll
method.
We also ask for a representation of each object. If we provide a
method named __str__
in our class, that method is
used; otherwise Python shows the memory address associated with the
object. All we can see is that the numbers are different, indicating
that these instances are distinct objects.