zoukankan      html  css  js  c++  java
  • Python中的 @staticmethod@classmethod方法

    python类中有三种方法,常见的是实例方法,另外两种是staticmethod装饰的静态方法,和classmethod装饰的类方法。

    1、对比

          流畅的python里,用一个例子进行了对比:

          (1)两个方法都不依赖于实例,类可以直接调用;

          (2)classmethod中,第一个参数为相应的类;staticmethod不是。

    2、使用场景

           1、静态方法适合,在该方法中,不需要访问任何实例方法和属性,只实现传入参数、返回数据的功能;

      2、类方法适合,作为工厂方法创建实例对象,需要在方法中调用静态类(与实例无关),那么就可以定义为类方法。同时,

    不能定义为静态方法:需要显示的调用类A,不便于被继承;

      3、流畅的python里认为,staticmethod可以被classmethod替代,staticmethod无用。

    class A:
    
        @staticmethod
        def m1()
            pass
    
        @staticmethod
        def m2():
            A.m1() # bad
    
        @classmethod
        def m3(cls):
            cls.m1() # good

    参考 :https://zhuanlan.zhihu.com/p/28010894

            

  • 相关阅读:
    sql server 获取本月的始末时间
    超时时间已到
    sql server定时自动备份
    创建连接服务器
    date制作电子时钟
    C#继承(三)
    C# Split分割
    Dom动态添加属性
    date制作电子时钟(二)
    全局遮罩 shade
  • 原文地址:https://www.cnblogs.com/573177885qq/p/10250471.html
Copyright © 2011-2022 走看看