[Python-Dev] __str__ does not default to __repr__ if a base class
has __str__
Edward C. Jones
edcjones at erols.com
Mon May 17 10:58:54 EDT 2004
# In the code below, "a.__str__()" does not default to "a.__repr__() as
# might be expected. It finds the "__str__" in the base class X. The
# Reference Manual, section 3.3.1, says:
# If a class defines __repr__() but not __str__(), then __repr__() is
# also used when an 'informal' string representation of instances of
# that class is required.
# If the reader is in lawyer mode, the documentation is correct.
# Is the current behavior what was intended? What should the behavior be?
class X(object):
def __str__(self):
return 'str for X'
def __repr__(self):
return 'repr for X'
class A(X):
def __repr__(self):
return 'repr for A'
# __str__ = __repr__
x = X()
a = A()
print x.__str__()
print x.__repr__()
print a.__str__()
print a.__repr__()
More information about the Python-Dev
mailing list