# Override Function Example

An which demonstrates a declarive function override.

This example demonstrates how to use the => operator to override a declarative function defined with the @d_func decorator.

Tip

To see this example in action, download it from `override_function` and run:

    $ enaml-run override_function.enaml

## Screenshot

## Example Enaml Code

    #------------------------------------------------------------------------------
    # Copyright (c) 2015-2024, Nucleic Development Team.
    #
    # Distributed under the terms of the Modified BSD License.
    #
    # The full license is in the file LICENSE, distributed with this software.
    #------------------------------------------------------------------------------
    """ An which demonstrates a declarive function override.

    This example demonstrates how to use the `=>` operator to override a
    declarative function defined with the @d_func decorator.

    << autodoc-me >>
    """
    from __future__ import print_function
    from enaml.core.declarative import d_func
    from enaml.widgets.api import Window, PushButton, Container

    class MySpecialPushButton(PushButton):
        """ A push button which has something to say.

        """
        @d_func
        def say_something(self, name):
            msg = 'Hi, {}'
            print(msg.format(name))

    enamldef Main(Window):
        attr name1 = 'John'
        attr name2 = 'Jane'
        Container:
            MySpecialPushButton:
                text = 'Say Hi'
                clicked :: self.say_something(name1)
            MySpecialPushButton:
                text = 'Say Hello'
                clicked :: self.say_something(name2)
                say_something => (name):
                    print('Hello, '+ name)