code_junkie

Best approach with dynamic classes using Python globals()

Nov 11th, 2011
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. result = globals()[classname](param).html
  2.  
  3. if classname == 'Foo':
  4. result = Foo(param).html
  5. elif classname == 'Bar':
  6. ...
  7.  
  8. class_lookup = {'Class1' : Class1, ... }
  9. ...
  10. result = class_lookup[className](param).html
  11.  
  12. class Namespace(object):
  13. class Class1(object):
  14. ...
  15. class Class2(object):
  16. ...
  17. ...
  18. result = getattr(Namespace, className)(param).html
  19.  
  20. def register_subclasses(base):
  21. d={}
  22. for cls in base.__subclasses__():
  23. d[cls.__name__] = cls
  24. d.update(register_subclasses(cls))
  25. return d
  26.  
  27.  
  28. class_lookup = register_subclasses(MyBaseClass)
  29.  
  30. dispatch = {'Foo': Foo, 'Bar': Bar, 'Bizbaz': Bizbaz}
  31.  
  32. class Foo:
  33. lookup = True
  34. def __init__(self, params):
  35. # and so on
  36.  
  37. class_lookup = zip([(c, globals()[c]) for c in dir() if hasattr(globals()[c], "lookup")])
Add Comment
Please, Sign In to add comment