The static method doesn't take an instance or class as the first argument. They are just simple functions. But we include them in class because they have some logical connection with the class. Consider a situation in the methodclass1.py program, when the pay of a person is less than 50000, then the incremented pay amount would be 1.30of pay amount , otherwise 1.20. To turn a regular method into a class method, we will use decorator (@staticmethod) at the top of the method.
Let's make the program:
class Leapx_org():
mul_num = 1.20
mul_num2 = 1.30
def __init__(self,first,last,pay):
self.f_name = first
self.l_name = last
self.pay_amt = pay
self.full_name = first+" "+last
@staticmethod
def check_amt(amt):
if amt <50000:
return True
else :
return False
def incrementpay(self):
if self.check_amt(self.pay_amt):
self.pay_amt = int(self.pay_amt*self.mul_num2)
else :
self.pay_amt = int(self.pay_amt*self.mul_num)
return self.pay_amt
L_obj1 = Leapx_org('mohit', 'RAJ', 40000)
L_obj2 = Leapx_org('Ravender', 'Dahiya',70000)
L_obj1.incrementpay()
L_obj2.incrementpay()
print L_obj1.pay_amt
print L_obj2.pay_amt
In the preceding program, the check_amt() method is a static method as specified by the decorator @staticmethod. The check_amt() method checks whether amt is greater than 50000 or not. The incrementpay() method uses the check_amt() static method. The check_amt() method does not change the class and instance variable. But it has some logical connection with regular method incrementpay().
Refer to the following output:
Hope you understood the static method.