一、引入
默认情况下,python类中定义的方法是实例方法,即这个方法有一个默认的形参self
,这个self
会在方法被调用的时候指向对象
但是
有些时候,我们并不需要对象的引用,即self
没用,那该怎么处理呢?能不写self
吗?
答:可以
二、静态方法是什么
如果一个方法不写self
即不需要实例对象的引用,此时在定义方法的时候可以用@staticmethod
对函数进行修饰,被修饰的函数就可以不写self
一句话:被@staticmethod
修饰的方法,就是静态方法
三、示例
class Calculator(object): """计算器类""" def __init__(self): # 定义2个默认值 self.num1 = 0 self.num2 = 0 @staticmethod def show_menu(): """因为打印菜单功能方法并不需要self指向的对象,所以就考虑使用静态方法""" print(" 东哥牌计算机 V2021.6") print("1. 加法") print("2. 减法") print("3. 乘法") print("4. 除法") print("5. 退出") def get_nums(self): self.num1 = int(input("请输入第1个数:")) self.num2 = int(input("请输入第2个数:")) def add(self): print(self.num1 + self.num2) def min(self): print(self.num1 - self.num2) def mul(self): print(self.num1 * self.num2) def div(self): print(self.num1 / self.num2) def run(self): while True: self.show_menu() op = input("请输入要进行的操作:") if op == "1": self.get_nums() self.add() elif op == "2": self.get_nums() self.min() elif op == "3": self.get_nums() self.mul() elif op == "4": self.get_nums() self.div() elif op == "5": break # 创建一个计算器对象 cal = Calculator() # 调用计算器的运行方法 cal.run()
运行效果
东哥牌计算机 V2021.6 1. 加法 2. 减法 3. 乘法 4. 除法 5. 退出 请输入要进行的操作:
四、总结
如果不需要用到对象,那么就可以将方法用@staticmethod
进行修饰,如此一来此方法就变成了静态方法