• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 浅谈python中的实例方法、类方法和静态方法

浅谈python中的实例方法、类方法和静态方法

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了浅谈,浅谈小学语文阅读教学,浅谈如何转化后进生,浅谈小学数学教学方法,浅谈幼儿心理健康教育等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在学习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)
</div>

静态方法和类方法都需要使用修饰器,分别使用的是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()
</div>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

</div>

您可能想查找下面的文章:

  • 浅谈五大Python Web框架
  • 浅谈python中的实例方法、类方法和静态方法
  • 浅谈编码,解码,乱码的问题
  • 浅谈编码,解码,乱码的问题
  • 浅谈Python的垃圾回收机制
  • 浅谈Python浅拷贝、深拷贝及引用机制
  • 浅谈Python类里的__init__方法函数,Python类的构造函数
  • 浅谈Python爬取网页的编码处理
  • 浅谈Python数据类型判断及列表脚本操作
  • 浅谈python对象数据的读写权限

相关文章

  • 使用python的chardet库获得文件编码并修改编码
  • 编写Python脚本把sqlAlchemy对象转换成dict的教程
  • python随机生成指定长度密码的方法
  • No connection adapters were found
  • python网页请求urllib2模块简单封装代码
  • 在Windows系统上搭建Nginx+Python+MySQL环境的教程
  • python登录QQ邮箱发信的实现代码
  • python动态监控日志内容的示例
  • 深入理解python中的闭包和装饰器
  • python不带重复的全排列代码

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 编写简单的Python程序来判断文本的语种
    • 全面解析Python的While循环语句的使用方法
    • Python原始字符串(raw strings)用法实例
    • Python自定义类的数组排序实现代码
    • 详解Python的Django框架中的Cookie相关处理
    • Python中函数的参数定义和可变参数用法实例分析
    • python文件读写操作与linux shell变量命令交互执行的方法
    • 详解Python网络爬虫功能的基本写法
    • python pickle 和 shelve模块的用法
    • Python中处理unchecked未捕获异常实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有