在学习python代码时,看到有的类的方法中第一参数是cls,有的是self,经过了解得知,python并没有对类中方法的第一个参数名字做限制,可以是self,也可以是cls,不过根据人们的惯用用法,self一般是在实例方法中使用,而cls则一般在类方法中使用,在静态方法中则不需要使用一个默认参数。在下面的代码中,InstanceMethod类的方法中,第一个参数是默认的self,在这里可以把self换成任何名字来表示,不会有任何影响。在类调用的时候,需要满足参数的个数要求(参数中含有*args是例外),例如13行中,类调用没有参数的时候,会提示错误。同样,实例方法的参数个数也应该满足要求,例如16行中也会报错。实例方法的一个主要特点就是需要绑定到一个对象上,python解析器会自动把实例自身传递给方法,如14行所示,而直接使用InstanceMethod.f1()调用方法是不行的。
class InstanceMethod(object):
def __init__(self, a):
self.a = a
def f1(self):
print 'This is {0}.'.format(self)
def f2(self, a):
print 'Value:{0}'.format(a)
if __name__ == '__main__':
# im = InstanceMethod()
im = InstanceMethod('233')
im.f1()
# im.f2()
im.f2(233)
静态方法和类方法都需要使用修饰器,分别使用的是staticmethod和classmethod。静态方法是和类没有关系的,我觉得就是包装在类中的一般方法,如下例子中,调用静态方法使用实例和不使用实例都是可以的。类方法中,默认的第一个参数使用的是cls,类方法也可以不需要实例而直接使用类调用。对于这三种不同的方法,使用方法如下例所示。那么问题来了,既然有了实例方法,类方法和静态方法与之相比又有什么好处呢?
在类方法中,不管是使用实例还是类调用方法,都会把类作为第一个参数传递进来,这个参数就是类本身。如果继承了这个使用类方法的类,该类的所有子类都会拥有了这个方法,并且这个方法会自动指向子类本身,这个特性在工厂函数中是非常有用的。静态方法是和类与实例都没有关系的,完全可以使用一般方法代替,但是使用静态方法可以更好的组织代码,防止代码变大后变得比较混乱。类方法是可以替代静态方法的。静态方法不能在继承中修改。
class test(object):
def instance_method(self):
print 'This is {0}'.format(self)
@staticmethod
def static_method():
print 'This is static method.'
@classmethod
def class_method(cls):
print 'This is {0}'.format(cls)
if __name__ == '__main__':
a = test()
a.instance_method()
a.static_method()
a.class_method()
print '----------------------------------------'
# test.instance_method()
test.static_method()
test.class_method()
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# python
# 实例方法
# 类方法
# 静态方法
# Python实例方法、类方法、静态方法区别详解
# Python 类方法和实例方法(@classmethod)
# 静态方法(@staticmethod)原理与用法分析
# python 类的继承 实例方法.静态方法.类方法的代码解析
# Python 实例方法、类方法、静态方法的区别与作用
# Python实例方法、类方法、静态方法的区别与作用详解
# 深入解析python中的实例方法、类方法和静态方法
# python中的实例方法、静态方法、类方法、类变量和实例变量浅析
# Python实例方法与类方法和静态方法介绍与区别分析
# 第一个
# 的是
# 子类
# 不需要
# 所示
# 类中
# 都是
# 是在
# 来了
# 在这里
# 我觉得
# 都没
# 能在
# 可以使用
# 与之
# 会把
# 中也
# 报错
# 绑定
# 又有什么
相关文章:
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
如何基于PHP生成高效IDC网络公司建站源码?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
网站制作软件有哪些,制图软件有哪些?
如何通过智能用户系统一键生成高效建站方案?
常州自助建站费用包含哪些项目?
网页设计与网站制作内容,怎样注册网站?
详解jQuery中基本的动画方法
如何在IIS7中新建站点?详细步骤解析
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
微信h5制作网站有哪些,免费微信H5页面制作工具?
MySQL查询结果复制到新表的方法(更新、插入)
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
如何在阿里云香港服务器快速搭建网站?
如何在云主机上快速搭建多站点网站?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
h5在线制作网站电脑版下载,h5网页制作软件?
如何通过主机屋免费建站教程十分钟搭建网站?
如何通过多用户协作模板快速搭建高效企业网站?
建站主机与虚拟主机有何区别?如何选择最优方案?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
创业网站制作流程,创业网站可靠吗?
,如何利用word制作宣传手册?
,石家庄四十八中学官网?
建站主机选择指南:服务器配置与SEO优化实战技巧
如何使用Golang安装API文档生成工具_快速生成接口文档
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
深圳网站制作案例,网页的相关名词有哪些?
高防服务器如何保障网站安全无虞?
建站之星安装步骤有哪些常见问题?
建站之星代理商如何保障技术支持与售后服务?
建站之星安装需要哪些步骤及注意事项?
红河网站制作公司,红河事业单位身份证如何上传?
如何选购建站域名与空间?自助平台全解析
建站之星收费标准详解:套餐费用及年费价格表一览
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
学校为何禁止电信移动建设网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
建站之星安装路径如何正确选择及配置?
济南网站制作的价格,历城一职专官方网站?
建站之星安装后如何配置SEO及设计样式?
如何通过虚拟主机快速搭建个人网站?
建站之星与建站宝盒如何选择最佳方案?
如何制作一个表白网站视频,关于勇敢表白的小标题?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
外贸公司网站制作哪家好,maersk船公司官网?
如何在建站主机中优化服务器配置?
韩国服务器如何优化跨境访问实现高效连接?
*请认真填写需求信息,我们会在24小时内与您取得联系。