Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

50 lines (35 sloc) 1.33 kb
# -written-in-python-the-sample-in-wikipedia
In most of other languages Strategy pattern is implemented via creating some
base strategy interface/abstract class and subclassing it with a number of
concrete strategies (as we can see at, however Python supports
higher-order functions and allows us to have only one class and inject
functions into it's instances, as shown in this example.
import types
class StrategyExample:
def __init__(self, func=None): = 'Strategy Example 0'
if func is not None:
self.execute = types.MethodType(func, self)
def execute(self):
def execute_replacement1(self):
print( + ' from execute 1')
def execute_replacement2(self):
print( + ' from execute 2')
if __name__ == '__main__':
strat0 = StrategyExample()
strat1 = StrategyExample(execute_replacement1) = 'Strategy Example 1'
strat2 = StrategyExample(execute_replacement2) = 'Strategy Example 2'
### OUTPUT ###
# Strategy Example 0
# Strategy Example 1 from execute 1
# Strategy Example 2 from execute 2
Jump to Line
Something went wrong with that request. Please try again.