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和普通函数的区别在于:前者在类内部,普通函数在类外部

  • 相关阅读:
    第三周:Filter 拦截用户请求部分代码分析
    Story Of Web Background
    XML的前景
    XML的工作原理和过程
    第二周:XML的定义和用途
    企业级应用与互联网应用的区别
    第一周:JavaEE——课程目标
    Java 容器小结
    使用java显示所有操作系统环境变量
    迭代器和Interator的常见用法
  • 原文地址:https://www.cnblogs.com/thinbottle/p/3011843.html
Copyright © 2011-2022 走看看