[Tutor] : unexpected behavior with assignment in __init__
Orri Ganel
singingxduck at gmail.com
Wed Jan 25 07:59:45 CET 2006
Hello all,
I was just messing around with a suggestion w chun (wescpy at gmail
dot com) gave (to make a class that handles time, ie:
> >> import myTime
> >> c = myTime.myTime(10,30)
> >> print c
10:30
> >> d = myTime.myTime(8,45)
> >> print c + d
19:15
etc), and I was trying to make it like the str class in that, by
default, when you str() a string, it returns the same object. I tried
to do this with the following (irrelevant code removed), but it didn't
work, despite original indications to the contrary, and I'm not sure I
understand why:
>>> class stime:
def __init__(self, minutes, seconds=None):
if seconds is None:
if minutes.__class__ is stime:
print minutes, type(minutes), minutes.__class__, id(minutes)
self = minutes
print self, type(self), self.__class__, id(self)
def __repr__(self):
return str(self)
def __str__(self):
return "%02d:%02d" % (self.minutes, self.seconds)
>>> a = stime(10,3)
>>> b = stime(a)
10:03 <type 'instance'> __main__.stime 12858832
10:03 <type 'instance'> __main__.stime 12858832
>>> # so, it appears to work, because it prints the same id both times.
however,
# . . .
>>> id(a)
12858832
>>> id(b)
12858792
>>> # they're not the same anymore! and that's not all:
>>> a
10:03
>>> b
Traceback (most recent call last):
File "<pyshell#163>", line 1, in -toplevel-
b
File "C:/Documents and Settings/Cookie/Desktop/stime.py", line 20, in
__repr__
return str(self)
File "C:/Documents and Settings/Cookie/Desktop/stime.py", line 22, in
__str__
return "%02d:%02d" % (self.minutes, self.seconds)
AttributeError: stime instance has no attribute 'minutes'
So, not only do the two variables not refer to the same object after
exiting __init__, but b is now a broken stime instance. Anyone know
what's going on?
Thanks in advance,
Orri
--
Email: singingxduck AT gmail DOT com
AIM: singingxduck
Programming Python for the fun of it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20060125/00cad0bf/attachment.htm
More information about the Tutor
mailing list