On Fri, 24 May 2013 04:40:22 -0700, RVic wrote: > I'm trying to figure out (or find an example) of polymorphism whereby I > pass a commandline argument (a string) which comports to a class (in > java, you would say that it comports to a given interface bu I don't > know if there is such a thing in Python) then that class of that name, > somehow gets intantiated from that string. This way, I can have similar > classes, but have my program use various ones by simply changing the > commandline argument. > > Can anyone show me how this might be done in Python? Thanks.
I'm not 100% sure I understand what you want, but my guess is you want something like this: # A toy class. class AClass(object): def __init__(self, astring): self.astring = astring def __repr__(self): return "%s(%r)" % (self.__class__.__name__, self.astring) # And some variations. class BClass(AClass): pass class CClass(AClass): pass # Build a dispatch table, mapping the class name to the class itself. TABLE = {} for cls in (AClass, BClass, CClass): TABLE[cls.__name__] = cls # Get the name of the class, and an argument, from the command line. # Or from the user. Any source of two strings will do. # Data validation is left as an exercise. import sys argv = sys.argv[1:] if not argv: name = raw_input("Name of the class to use? ") arg = raw_input("And the argument to use? ") argv = [name, arg] # Instantiate. instance = TABLE[argv[0]](argv[1]) print instance -- Steven -- http://mail.python.org/mailman/listinfo/python-list