Python @staticmethod和@classmethod
2015-01-20 14:57
435 查看
class MethodTest():
var1 ="class var"
def__init__(self, var2 = "object var"):
self.var2 = var2
@staticmethod
defstaticFun():
print'static method'
@classmethod
defclassFun(cls):
print 'class method'
staticmethod和classmethod的相同点:
1.都可以通过类或实例调用
mt = MethodTest()
MethodTest.staticFun()
mt.staticFun()
MethodTest.classFun()
mt.classFun()
2.都无法访问实例成员
@staticmethod
defstaticFun():
print var2 //wrong
@classmethod
defclassFun(cls):
print var2 //wrong
staticmethod和classmethod的区别:
1.staticmethod无需参数,classmethod需要类变量作为参数传递(不是类的实例)
defclassFun(cls):
print 'class method' //cls作为类变量传递
2.classmethod可以访问类成员,staticmethod则不可以
@staticmethod
defstaticFun():
print var1 //wrong
@classmethod
defclassFun(cls):
print cls.var1 //right
var1 ="class var"
def__init__(self, var2 = "object var"):
self.var2 = var2
@staticmethod
defstaticFun():
print'static method'
@classmethod
defclassFun(cls):
print 'class method'
staticmethod和classmethod的相同点:
1.都可以通过类或实例调用
mt = MethodTest()
MethodTest.staticFun()
mt.staticFun()
MethodTest.classFun()
mt.classFun()
2.都无法访问实例成员
@staticmethod
defstaticFun():
print var2 //wrong
@classmethod
defclassFun(cls):
print var2 //wrong
staticmethod和classmethod的区别:
1.staticmethod无需参数,classmethod需要类变量作为参数传递(不是类的实例)
defclassFun(cls):
print 'class method' //cls作为类变量传递
2.classmethod可以访问类成员,staticmethod则不可以
@staticmethod
defstaticFun():
print var1 //wrong
@classmethod
defclassFun(cls):
print cls.var1 //right
相关文章推荐
- python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别
- 【转】Python @classmethod @staticmethod
- python @classmethod和@staticmethod
- python staticmethod classmethod
- Python Static method vs class method
- 】Python @classmethod @staticmethod
- python staticmethod&classmethod
- Python @staticmethod vs @classmethod
- [基础] - Python中 @staticmethod 和 @classmethod
- 【转】Python @classmethod @staticmethod
- python classmethod staticmethod
- python staticmethod and classmethod方法
- python decorators, classmethod and staticmethod
- python之staticmethod classmethod call
- python基础理论(二)-- classmethod & staticmethod
- python @classmethon @staticmethod 的使用及区别
- Python classmethod staticmethod 进价学习
- Python:staticmethod vs classmethod
- python @ property classmethod staticmethod
- python的static class method and member