zoukankan      html  css  js  c++  java
  • python基础理论(二) classmethod & staticmethod

    #代码说明
    
    def aFunc_1():
        pass
    
    class Myclass(object):
        
        a_arg = arg1
        
        def __init__(sefl, *args, **kwargs):
        
              self.another_arg = args[]
    
        def afunc_2(self):
               print self.another_arg
    
        @classmethod
        def aFunc_3(cls):
                print "class method"
    
        @staticmethod
        def aFunc_4():
                print "static method"

    程序中涉及到

    1)四个函数:aFunc_1(),aFunc_2(self),  aFunc_3(cls), aFunc_4()

      aFunc_1(): 普通函数(全局作用域)

      aFunc_2(self):类函数(类作用域)

      aFunc_3(cls):类成员方法函数(类作用域)

       aFunc_4():类静态方法函数(类作用域)

    2)两个属性:a_arg、self.another_arg

      a_arg:类属性

      self.another_arg:类实例属性

    3)两个参数:(self)、(cls)

      self:隐式传递对象参数

      cls:隐式传递类参数

    访问权限的区别:

    函数类别 可否访问a_arg 可否访问self.another_arg 是否需要带self 是否需要带cls
    aFunc_1() NO NO NO NO
    aFunc_2() Yes Yes Yes NO
    aFunc_3() Yes NO NO Yes
    aFunc_4() NO NO NO NO

    从表中可以看出:

    1、类函数(可以访问所有类属性) > 类成员方法函数(只能访问类属性) > 类静态方法函数(在类作用域中的普通函数) > 普通函数(在类作用域外的普通函数)

    2、classmethod和staticmethod的区别在于:classmethod有一个类参数(cls) 

    3、staticmethod和普通函数的区别在于:前者在类内部,普通函数在类外部

  • 相关阅读:
    C语言 · 字符串输入输出函数
    C语言 · 判定字符位置
    剑指offer二之替换空格
    剑指offer一之二维数组中的查找
    算法复杂度:时间复杂度与空间复杂度
    二分查找法
    信息熵
    K-means算法的原理、优缺点及改进(转)
    office2013安装与卸载
    Deep Learning (中文版&英文版)
  • 原文地址:https://www.cnblogs.com/thinbottle/p/3011843.html
Copyright © 2011-2022 走看看