zoukankan      html  css  js  c++  java
  • 【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)

    在java、c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢。

    python提供了@classmethod和@staticmethod来定义静态方法,刚接触的时候不太明白,Stack Overflow提供了一个比较方便理解的解释,Stack Overflow回答

    但是看完还是不太理解,于是自己写了个实例:

    class stclass():
        d=1
        #对象方法
        def imethod(self):
            print(self)
            print("instance method")
        #类方法
        @classmethod
        def cmethod(cls):
            print(cls)
            print("class method")
        #静态方法
        @staticmethod
        def smethod():
            print("static method")
    
    sc = stclass()
    sc.imethod()
    sc.cmethod()
    sc.smethod()
    

      运行结果如下:

    然后就可以解释了:

    1、实例方法,该实例属于对象,该方法的第一个参数是当前实例,拥有当前类以及实例的所有特性。

    2、类方法,该实例属于类,该方法的第一个参数是当前类,可以对类做一些处理,如果一个静态方法和类有关但是和实例无关,那么使用该方法。

    3、静态方法,该实例属于类,但该方法没有参数,也就是说该方法不能对类做处理,相当于全局方法。

  • 相关阅读:
    C#练习记录(统计字符串中的字符数和计算最大值)
    C#练习记录(交换两个数)
    Cyberdebut's daily record_3
    SWJTU_LightMoon Training #16~20 补题
    zzh训练日志3
    SWJTU_LightMoon Training #11~15 补题
    Megumin's daily record3
    2017网络赛
    zzh的训练日志2
    Cyberdebut's daily record_2
  • 原文地址:https://www.cnblogs.com/wyongbo/p/python_static_method.html
Copyright © 2011-2022 走看看