Python面向对象-17.静态方法
一、引入
默认情况下,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进行修饰,如此一来此方法就变成了静态方法