zoukankan      html  css  js  c++  java
  • python(三)@staticmethod和@classmethod使用和区别

    转载自[1]   

        一般要用某个类的方法,先要实例这个类。

         但是可以通过@staticmethod和@classmethod,直接用“类.方法()”来调用这个方法。

         而 @staticmethod和@classmethod 区别是

             @staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。

             @classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。

        @staticmethod中要调用到这个类的一些属性方法,可以直接类名.属性名或类名.方法名。 

        @classmethod有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。

        下面上代码

    class A(object):  
        bar = 1  
        def foo(self):  
            print 'foo'  
     
        @staticmethod  
        def static_foo():  
            print 'static_foo'  
            print A.bar  
     
        @classmethod  
        def class_foo(cls):  
            print 'class_foo'  
            print cls.bar  
            cls().foo()  
      
    A.static_foo()  
    #输出
    #static_foo
    #1
    
    A.class_foo()  
    #输出
    #class_foo
    #1
    #foo

    参考:

       [1] @staticmethod和@classmethod 作用和区别

          http://blog.csdn.net/qq_15037231/article/details/77943109

  • 相关阅读:
    CentOS 用命令访问网页
    ngalian(一)2:安装npm环境
    数仓建设原则探讨
    C#中获取系统时间 LZU
    判断是否是数字类 LZU
    Extjs中ComboBoxTree的实现 LZU
    SQL之学生选课数据库 LZU
    如何看书 LZU
    面向对象思想 LZU
    C#控件命名规范 LZU
  • 原文地址:https://www.cnblogs.com/Jomini/p/8569211.html
Copyright © 2011-2022 走看看