• 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进行修饰,如此一来此方法就变成了静态方法

  • 相关阅读:
    TimeVal类——Live555源码阅读(一)基本组件类
    QT国际化 一 (lupdate/linguits/lrelease)
    qmake的使用
    将Apache加入到linux系统service
    ubuntu下编译VLC
    Ubuntu14.04安装intel集显驱动
    net-snmp的dateandtime数据类型
    MySQL的主从复制原理
    【iOS开发-25】UIDevice查看系统信息,从一个问题開始怎样高速找到自己想要的属性和方法并看懂它
    POJ 3279 Fliptile (二进制+搜索)
  • 原文地址:https://www.cnblogs.com/dong4716138/p/15761428.html
Copyright © 2020-2023  润新知