tags:

views:

112

answers:

2

How can I revert back to the default function that python uses if there is no __str__ method?

class A :
   def __str__(self) :
      return "Something useless"

class B(A) :
   def __str__(self) :
      return some_magic_base_function(self)
+9  A: 

You can use object.__str__():

class A:
   def __str__(self):
      return "Something useless"

class B(A):
   def __str__(self):
      return object.__str__(self)

This gives you the default output for instances of B:

>>> b = B()
>>> str(b)
'<__main__.B instance at 0x7fb34c4f09e0>'
sth
+1  A: 

"the default function that python uses if there is no __str__ method" is repr, so:

class B(A) :
   def __str__(self) :
      return repr(self)

This holds whether __repr__ has been overridden in the inheritance chain or not. IOW, if you ALSO need to bypass possible overrides of __repr__ (as opposed to using them if they exist, as this approach would do), you will need explicit calls to object.__repr__(self) (or to object.__str__ as another answer suggested -- same thing).

Alex Martelli