Python中的staticmethod和classmethod 的异同
2024-07-24 15:01:44 218人阅读
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
Python中的staticmethod和classmethod 的异同
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。