• Python静态方法(staticmethod)和类方法(classmthod)


    Python静态方法(staticmethod)和类方法(classmthod)
    翻了翻之前的笔记,也刚好看到一篇不错的blog,关于静态方法和类方法的,方便以后查阅,就写在这里了,废话不多说,直接上代码。。。

     1 class TestMethod():
     2 
     3     def fun1(self):
     4         return '普通方法'
     5 
     6     @staticmethod
     7     def fun2():
     8         return 'staticmethod'
     9 
    10     @classmethod
    11     def fun3(cls):
    12         return 'classmethod'
    13 
    14 a = TestMethod()
    15 print(TestMethod.fun1)
    16 print(TestMethod.fun2)
    17 print(TestMethod.fun3)
    18 print('*'*100)
    19 
    20 testmethod1 = TestMethod()
    21 print(TestMethod.fun1)
    22 print(TestMethod.fun2)
    23 print(TestMethod.fun3)
    24 print('*'*100)
    25 
    26 testmethod2 = TestMethod()
    27 print(TestMethod.fun1)
    28 print(TestMethod.fun2)
    29 print(TestMethod.fun3)
    30 print('*'*100)


     运行结果如下:

     分析:

      这里先理解下函数参数里面的self和cls。这个self和cls是对类或者实例的绑定,对于一般的函数来说我们可以这么调用foo(x)这个函数就是最常用的,它的工作跟任何东西(类.实例)无关.对于实例方法,我们知道在类里每次定义方法的时候都需要绑定这个实例,就是foo(self, x)为什么要这么做呢?因为实例方法的调用离不开实例,我们需要把实例自己传给函数,调用的时候是这样的a.foo(x)(其实是foo(a, x)).类方法一样,只不过它传递的是类而不是实例,A.class_foo(x)注意这里的self和cls可以替换别的参数,但是python的约定是这俩,还是不要改的好.。

      对于静态方法其实和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时候需要使用a.static_foo(x)或者A.static_foo(x)来调用。

     

  • 相关阅读:
    Android获取网络图片应用示例
    VC操作MPP文件
    带"叉叉"的GridView
    持续集成之路 —— Mock对象引起的测试失败
    一次httpserver优化的经验和教训(silverlight游戏
    独立开发人员的自由之路 ——1
    Python标准库:内置函数chr(i)
    Matlab The Bisection Method
    ELF解析(part one)
    文件打开的过程——调用fd=open()时操作系统所做的工作
  • 原文地址:https://www.cnblogs.com/MisterZZL/p/9729902.html
Copyright © 2020-2023  润新知