can I call operator overloader in superclass?

Emile van Sebille emile at fenx.com
Thu Jun 20 09:17:58 EDT 2002


Jon J. Morin
> classAListSub(AList):
>         repr_calls = 0
>         def __init__(self, list=[]):
>                 AList.__init__(self, list)
>         def __repr__(self):
>                 AListSub.repr_calls = AListSub.repr_calls + 1
>                 print "Calling __repr__ in superclass"
>                 AList.__repr__(self)
>                 print "Method called %d times." %
(AListSub.repr_calls)
> ...
> ...
> ...
> I can create instances on AListSub by passing in a string, or a list
as in
> >>> x = AListSub('sasquatch')
> >>> x
> Calling __repr__ in superclass
> Method called 1 times.
> Traceback (innermost last):
>   File "<stdin>", line 1, in ?
> TypeError: repr not string
>
> For one, I don't understand the error.  For seconds, can I call
__repr__ in
> the superclass from __repr__ in the subclass?

You should return a string from the __repr__ method:

>>> class test:
...     def __repr__(self):
...             print 'in __repr__'
...
>>> t = test()
>>> `t`
in __repr__
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: __repr__ returned non-string (type None)
>>> class test:
...     def __repr__(self):
...             print 'in __repr__'
...             return "string"
...
>>> t = test()
>>> `t`
in __repr__
'string'
>>>

--

Emile van Sebille
emile at fenx.com

---------




More information about the Python-list mailing list