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() | 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和普通函数的区别在于:前者在类内部,普通函数在类外部
相关文章推荐
- [基础] - Python中 @staticmethod 和 @classmethod
- python staticmethod&classmethod
- Python @staticmethod@classmethod用法
- 【转】Python @classmethod @staticmethod
- Python 入门:装饰器(decorator)、@functools.wraps、@staticmethod、@classmethod
- python classmethod staticmethod
- Python: classmethod & staticmethod 区别
- Class method differences in Python: bound, unbound and static
- What is the difference between @staticmethod and @classmethod in Python?
- Python @staticmethod和@classmethod
- python @,@staticmethod,@classmethod
- python staticmethod & classmethod
- python @classmethod和@staticmethod的区别
- python @classmethod和@staticmethod
- Python 实例方法、@staticmethod和@classmethod
- Python 实例方法、@staticmethod和@classmethod
- Python @classmethod @staticmethod
- Python:staticmethod vs classmethod
- Python @staticmethod vs @classmethod
- python的static class method and member