File: LP6E/Chapter29/specialize.py

class Super:
    def method(self):
        print('in Super.method')             # Default behavior
    def delegate(self):
        self.action()                        # Expected to be defined

class Inheritor(Super):                      # Inherit method verbatim
    pass

class Replacer(Super):                       # Replace method completely
    def method(self):
        print('in Replacer.method')

class Extender(Super):                       # Extend method behavior
    def method(self):
        print('starting Extender.method')
        Super.method(self)                   # Or: super().method()
        print('ending Extender.method')

class Provider(Super):                       # Fill in a required method
    def action(self):
        print('in Provider.action')

if __name__ == '__main__':
    for klass in (Inheritor, Replacer, Extender):
        print('\n' + klass.__name__ + '...')
        klass().method()

    print('\nProvider...')
    x = Provider()
    x.delegate()



[Home page] Books Code Blog Python Author Train Find ©M.Lutz