I’ve written some code that allows the term ‘job’ to be used universally to perform a unique task. The specific jobs can be chosen through setting an initial variable “job_type”. From that initial variable a particulay subclass is chosen to perform the appropriate job. Maybe the code will make more sense 🙂
if __name__=='__main__':
# these variables would normally be called in from a config file
job_type = 'job1'
uni_var = 10
job_select = superClass(job_type, uni_var)
job_select.job()
class superClass(object):
def __init__(self, job_type, uni_var):
self.job_type = job_type
self.uni_var = uni_var
if self.job_type == 'job1':
self.jobChoice = option1()
else:
self.jobChoice = option2()
# This is the definition called by the main function it then
# redirects the request to the appropriate job sub class
def job(self):
self.jobChoice.job()
class option1(superClass):
def __init__(self):
pass
def job(self):
print 'job option 1'
print uni_var
class option2(superClass):
def __init__(self):
pass
def job(self):
print 'job option 2'
print uni_var
The thought behind this code was to allow a single/constant ‘main’ function, to action a variety of unique tasks based purely on the variable ‘job_type’. Which it seems to be doing fine.
My question (as a very inexperienced coder) is, have I gone about this the right way or is there a better way to do things?
Also, have I set up the variable ‘uni_var’ correctly in the superClass to be correctly shared across all/any superClass subclasses?
Thanks.
I suspect that what you really want is to use the Factory Method Pattern here.
You could change your code to something like this:
However, notice that this implementation will require that
superClassbe changed every time a new subclass is created. Another alternative would be to make theoptionFactorymethod a standalone function (rather than a method ofsuperClass). Like this: