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、静态方法,该实例属于类,但该方法没有参数,也就是说该方法不能对类做处理,相当于全局方法。

  • 相关阅读:
    入门经典 第七章 7.3.3 二进制生成子集
    gdb调试方法简要总结
    Erlang_1
    hdu 1144
    创建一个类,重载运算符实现多项式的加,减,乘运算
    ubuntu12.04 iNodeClient 连校园网
    ftime使用
    CodeForce 264 A. Escape from Stones
    hdu 1161 Eddy's mistakes
    hdu 1064
  • 原文地址:https://www.cnblogs.com/wyongbo/p/python_static_method.html
Copyright © 2011-2022 走看看