[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