Python static Method

We need python static methods when the processing is at the class level but we need not involve the class or instances. Static methods are used when some processing is related to the class but does not need the class or its instances to perform any work.

Setting environmental variables, counting the number of instances of the class or changing an attribute in another class, etc. are the tasks related to a class. Such tasks are handled by static methods. Also, static methods can be used to accept some values, process them and return the result. In this case the involvement of neither the class nor the objects is needed.

Static methods are written with a decorator @staticmethod above them. Static methods are called in the form of classname.method().

Simple Python Static Method Example

class Myclass: 
   def __init__(self): 
      Myclass.n = Myclass.n+1 
   def noObjects(): 
      print('No. of instances created: ', Myclass.n) 
obj1 = Myclass() 
obj2 = Myclass() 
obj3 = Myclass() 

Python Static Method Example

#a static method to find square root value 
import math 
class Sample: 
   def calculate(x):
      result = math.sqrt(x) 
      return result 
num = float(input('Enter a number:')) 
res = Sample.calculate(num) 
print('The square root of {} is {:.2f}'.format(num, res))

Python Instance method Example

import sys 
class Bank(object): 
   #to initialize name and balance instance vars 
   def __init__(self, name, balance=0.0): = name 
      self.balance = balance 
   #to add deposit amount to balance 
   def deposit(self, amount): 
      self.balance += amount 
      return self.balance 
   #to deduct withdrawal amount from balance 
   def withdraw(self, amount): 
      if amount >self.balance: 
         print('Balance amount is less, so no withdrawal.') 
        self.balance -= amount 
      return self.balance 
#using the Bank class
 #create an account with the given name and balance 0.00 
name = input('Enter name:') 
b = Bank(name) 
#this is instance of Bank class 
#repeat continuously till choice is 'e' or 'E'. 
   print('d -Deposit, w -Withdraw, e -Exit') 
   choice = input('Your choice:') 
   if choice == 'e' or choice == 'E': 
#amount for deposit or withdraw 
   amt = float(input('Enter amount:')) 
#do the transaction 
   if choice == 'd' or choice == 'D': 
      print('Balance after deposit:', b.deposit(amt)) 
   elif choice == 'w' or choice == 'W': 
      print('Balance after withdrawal:', b.withdraw(amt))