I have a number of methods in a class and I need to call a specific one. I tried something like this, but got an AttributeError
class MyClass:
def first(a, b):
return a + b
def second(a, b):
return a * b
a = 2
b = 3
first_func = MyClass.first
second_func = MyClass.second
my_obj = MyClass()
I expect something of a following to work, but I’m getting this exception:
my_obj.first_func(a, b) + my_obj.second_func(a, b) == 11
So is there a way to do it?
>Solution :
Since your methods do not have self parameters, they are "static" and do not depend on the intantiated object. You can call your functions this way:
first_func(a, b) # no my_obj
If in reality they do depend on the object, you would write:
class MyClass:
def first(self, a, b):
return a + b
def second(self, a, b):
return a * b
And they you can call the method "on" an object:
my_obj = MyClass()
my_obj.first(a, b)
Or, with your initial notation:
first_func = MyClass.first
first_func(my_obj, a, b)
(same for your second method)