Suppose a Python class has different methods, and depending on what the user specifies, a different method is carried out in the main function calculate()
.
In the example below the user needs to specify the keyword argument 'methodOne'
or 'methodTwo'
. If no or an incorrect keyword is specified it should default to 'methodOne'
.
class someClass(object):
def __init__(self,method=None):
methodList = ['methodOne','methodTwo']
if method in methodList:
self.chosenMethod = method
else:
self.chosenMethod = self.methodOne
def methodOne(self):
return 1
def methodTwo(self):
return 2
def calculate(self):
return self.chosenMethod()
The above clearly does not work since method
is a string and not a function. How can I select self.methedOne()
or self.methedOne()
based on my keyword argument method
? In principle the following works:
def __init__(self,method=None):
if method == 'methodOne':
self.chosenMethod = self.methodOne
elif method == 'methodTwo':
self.chosenMethod = self.methodTwo
else:
self.chosenMethod = self.methodOne
But if I have more than two methods this becomes rather ugly. Is there a way to do this similar to my original code?