Trouble with inheritance and self

Boethius boethius at techie.com
Fri Jan 17 08:04:31 EST 2003


I have 2 classes (A and B). Both have a render method that returns a
string.
The only difference between A and B's render is the first part of the
string (header).

B inherits from A and uses A's render with its own header (see code
below).  However, I get a weird error:

Traceback (most recent call last):
  File "<pyshell#23>", line 1, in ?
    b.render()
  File "<pyshell#19>", line 7, in render
    return A.render(self, header=self._header)
  File "<pyshell#17>", line 7, in render
    return header(self) + 'Foo Bar Baz'
TypeError: _header() takes exactly 1 argument (2 given)

What am I doing wrong? O:-)
TIA

---------code-------------------------------------------------------
class A(object):

    def _header(self):
        return "A's header"

    def render(self, header = _header):
        return header(self) + 'Foo Bar Baz'

class B(A):

    def _header(self):
        return "B's header"

    def render(self):
        return A.render(self, header=self._header)

b = B()
b.render()

Traceback (most recent call last):
  File "<pyshell#23>", line 1, in ?
    b.render()
  File "<pyshell#19>", line 7, in render
    return A.render(self, header=self._header)
  File "<pyshell#17>", line 7, in render
    return header(self) + 'Foo Bar Baz'
TypeError: _header() takes exactly 1 argument (2 given)




More information about the Python-list mailing list