python中类方法的区别是什么

图片[1]-python中类方法的区别是什么-uusu优素-乐高,模型,3d打印,编程

面相对象程序设计中,类方法和静态方法是经常用到的两个术语。

逻辑上讲:类方法是只能由类名调用;静态方法可以由类名或对象名进行调用。

在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆。

而在Python中,方法分为三类:实例方法、类方法、静态方法。代码如下:

classTest(object):
defInstanceFun(self):
print("InstanceFun");
print(self);
@classmethod
defClassFun(cls):
print("ClassFun");
print(cls);
@staticmethod
defStaticFun():
print("StaticFun");
t=Test();
t.InstanceFun();      #输出InstanceFun,打印对象内存地址“<__main__.Testobjectat0x0293DCF0>”
Test.ClassFun();#输出ClassFun,打印类位置<class'__main__.Test'>
Test.StaticFun();#输出StaticFun
t.StaticFun();#输出StaticFun
t.ClassFun();#输出ClassFun,打印类位置<class'__main__.Test'>
Test.InstanceFun();#错误,TypeError:unboundmethodinstanceFun()mustbecalledwithTest
instanceasfirstargument
Test.InstanceFun(t);#输出InstanceFun,打印对象内存地址“<__main__.Testobjectat0x0293DCF0>”
t.ClassFun(Test);#错误classFun()takesexactly1argument(2given)

可以看到,在PYTHON中,两种方法的主要区别在于参数。实例方法隐含的参数为类实例self,而类方法隐含的参数为类本身cls。
静态方法无隐含参数,主要为了类实例也可以直接调用静态方法。

原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容