您的位置:首页 > 编程语言 > Python开发

python基础理论(二)-- classmethod & staticmethod

2013-04-10 10:37 841 查看
#代码说明

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()NONONONO
aFunc_2()YesYesYesNO
aFunc_3()YesNONOYes
aFunc_4()NONONONO
从表中可以看出:

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

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

3、staticmethod和普通函数的区别在于:前者在类内部,普通函数在类外部
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: