J
J Peyret
This gives a particularly nasty abend in Windows - "Python.exe has
stopped working", rather than a regular exception stack error. I've
fixed it, after I figured out the cause, which took a while, but maybe
someone will benefit from this.
Python 2.6.5 on Windows 7.
class Foo(object):
pass
#def __str__(self): #if you have this defined, no abend
# return "a Foo"
Foo.__repr__ = Foo.__str__ # this will cause an abend.
#Foo.__str__ = Foo.__repr__ #do this instead, no abend
foo = Foo()
print str(foo)
I suspect that object.__str__ is really object.__repr__ by default, as
they both print out the same string, so that this doesn't make any
sense.
What was I trying to achieve? Leveraging __str__ to debug instances
in lists and containers. In that case, __repr__ is called and I
usually do:
class Foo(object):
def __str__(self):
return "a foo"
def __repr__(self): #was trying to avoid this.
return str(self)
stopped working", rather than a regular exception stack error. I've
fixed it, after I figured out the cause, which took a while, but maybe
someone will benefit from this.
Python 2.6.5 on Windows 7.
class Foo(object):
pass
#def __str__(self): #if you have this defined, no abend
# return "a Foo"
Foo.__repr__ = Foo.__str__ # this will cause an abend.
#Foo.__str__ = Foo.__repr__ #do this instead, no abend
foo = Foo()
print str(foo)
I suspect that object.__str__ is really object.__repr__ by default, as
they both print out the same string, so that this doesn't make any
sense.
What was I trying to achieve? Leveraging __str__ to debug instances
in lists and containers. In that case, __repr__ is called and I
usually do:
class Foo(object):
def __str__(self):
return "a foo"
def __repr__(self): #was trying to avoid this.
return str(self)