Report defines the template method render() returning header() + '|' + body() where header() returns 'REPORT' but body() raises NotImplementedError. Subclass SalesReport supplies body() returning 'sales=90'. The base fixes the skeleton; children fill the blanks.SalesReport().render()
'REPORT|sales=90'
The template assembled inherited and overridden pieces.
The base calls self.body() — dispatch finds the child version.
Do not override render in the subclass.