GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — python-patterns/catalog.py at master · mailyupeng/python-patterns Expand file tree/ Copy pathcatalog.pyMore file actions 64 lines (49 loc) · 1.66 KB / Copy pathcatalog.pyFile metadata and controls64 lines (49 loc) · 1.66 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 #!/usr/bin/env python # -*- coding: utf-8 -*- """ A class that uses different static function depending of a parameter passed in init. Note the use of a single dictionnary instead of multiple conditions """ __author__ = "Ibrahim Diop <http://ibrahim.zinaria.com>" __gist__ = "<https://gist.github.com/diopib/7679559>" class Catalog(): """ catalog of multiple static methods that are executed depending on an init parameter """ def __init__(self, param): # dictionary that will be used to determine which static method is # to be executed but that will be also used to store possible param # value self.static_method_choices = {'param_value_1': self.static_method_1, 'param_value_2': self.static_method_2} # simple test to validate param value if param in self.static_method_choices.keys(): self.param = param else: raise Exception("Invalid Value for Param: {0}".format(param)) @staticmethod def static_method_1(): print("executed method 1!") @staticmethod def static_method_2(): print("executed method 2!") def main_method(self): """ will execute either static_method_1 or static_method_2 depending on self.param value """ self.static_method_choices[self.param]() def main(): """ >>> c = Catalog('param_value_1').main_method() executed method 1! >>> Catalog('param_value_2').main_method() executed method 2! """ test = Catalog('param_value_2') test.main_method() if __name__ == "__main__": main() ### OUTPUT ### # executed method 2! |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |