Bläddra i källkod

Fixed PEP-8 discrepancy in Strategy pattern

jcdenton 12 år sedan
förälder
incheckning
c695dd50ce
1 ändrade filer med 20 tillägg och 16 borttagningar
  1. 20 16
      strategy.py

+ 20 - 16
strategy.py

@@ -1,36 +1,40 @@
-"""http://stackoverflow.com/questions/963965/how-is-this-strategy-pattern-written-in-python-the-sample-in-wikipedia"""
+"""http://stackoverflow.com/questions/963965/how-is-this-strategy-pattern-written-in-python-the-sample-in-wikipedia
 
 
-import types  
+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 http://en.wikipedia.org/wiki/Strategy_pattern),
+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:
 class StrategyExample:
-
-    def __init__(self, func=None):         
-        self.name = "Strategy Example 0"         
-        if func:
+    def __init__(self, func=None):
+        self.name = 'Strategy Example 0'         
+        if func is not None:
             self.execute = types.MethodType(func, self)      
             self.execute = types.MethodType(func, self)      
 
 
     def execute(self):         
     def execute(self):         
         print(self.name)   
         print(self.name)   
 
 
 
 
-def executeReplacement1(self):
-    print(self.name + " from execute 1")   
+def execute_replacement1(self):
+    print(self.name + ' from execute 1')   
 
 
 
 
-def executeReplacement2(self):
-    print(self.name + " from execute 2")  
+def execute_replacement2(self):
+    print(self.name + ' from execute 2')  
 
 
 
 
-if __name__ == "__main__":
+if __name__ == '__main__':
     strat0 = StrategyExample()     
     strat0 = StrategyExample()     
 
 
-    strat1 = StrategyExample(executeReplacement1)     
-    strat1.name = "Strategy Example 1"     
+    strat1 = StrategyExample(execute_replacement1)
+    strat1.name = 'Strategy Example 1'     
 
 
-    strat2 = StrategyExample(executeReplacement2)     
-    strat2.name = "Strategy Example 2"      
+    strat2 = StrategyExample(execute_replacement2)
+    strat2.name = 'Strategy Example 2'
 
 
-    strat0.execute()     
+    strat0.execute()
     strat1.execute()     
     strat1.execute()     
     strat2.execute()
     strat2.execute()