Python OOP类中的几种函数或方法总结


Posted in Python onFebruary 22, 2019

概述

实例方法

  • 使用实例调用时,默认传递实例本身到实例方法的第一个参数self
  • 使用类调用时,必须传递一个实例对象到实例方法的第一个参数

静态方法

  • 使用实例调用和类调用效果相同;

类方法

装饰器版:

  • 使用实例调用和类调用效果相同;

classmethod(function)版:

  • 在类中,尽量不要使用classmethod(function)实现类方法,会将其当做实例方法使用;
  • 使用实例调用时,会默认传递实例本身到函数的第一个参数,如果函数的参数个数为0,则报错;
  • 如果必须这样做,就使用类调用.

普通函数

  • 在类中,尽量不要定义普通函数,会将其当做实例方法使用;
  • 使用实例调用时,会默认传递实例本身到函数的第一个参数,如果函数的参数个数为0,则报错;
  • 如果必须这样做,就使用类调用.

总而言之,除了装饰器版的类方法和静态方法外,其它方法与函数均可看做是实例方法.

代码与运行结果

class A(object):
  def instant_method(self,*args):
    print('实例方法',*args)
  @classmethod
  def class_method_01(clz,*args):
    """第一个参数为class,调用时自动传递"""
    print('类方法(装饰器版)',*args)
  def class_method_02(*args):
    print('类方法(普通函数通过内置函数classmethond(function)转换版)',*args)
  classmethod(class_method_02)
  @staticmethod
  def static_method(*args):
    print('静态方法',*args)
  def normal_function(*args):
    print('普通函数',*args)
a=A()
# 调用实例方法
a.instant_method('通过实例调用')
A.instant_method(a,'通过类调用')
# 调用装饰器版类方法
a.class_method_01('通过实例调用')
A.class_method_01('通过类调用')
# 调用classmethod(function)版类方法
# 通过实例调用时,会默认传递实例本身到方法的第一个参数
a.class_method_02('通过实例调用')
A.class_method_02('通过类调用')
# 调用静态方法
a.static_method('通过实例调用')
A.static_method('通过类调用')
# 调用普通函数
# 通过实例调用时,会默认传递实例本身到方法的第一个参数
a.normal_function('通过实例调用')
A.normal_function('通过类调用')

输出

实例方法 通过实例调用
实例方法 通过类调用
类方法(装饰器版) 通过实例调用
类方法(装饰器版) 通过类调用
类方法(普通函数通过内置函数classmethond(function)转换版) <main.A object at 0x7f9b9b0486a0> 通过实例调用
类方法(普通函数通过内置函数classmethond(function)转换版) 通过类调用
静态方法 通过实例调用
静态方法 通过类调用
普通函数 <main.A object at 0x7f9b9b0486a0> 通过实例调用
普通函数 通过类调用

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python模拟鼠标拖动操作的方法
Mar 11 Python
Python工程师面试题 与Python Web相关
Jan 14 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
python机器学习之神经网络(二)
Dec 20 Python
python爬虫自动创建文件夹的功能
Aug 01 Python
PyGame贪吃蛇的实现代码示例
Nov 21 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
浅析Python3 pip换源问题
Jan 06 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
Python如何使用input函数获取输入
Aug 06 Python
VSCode Python开发环境配置的详细步骤
Feb 22 #Python
python中logging模块的一些简单用法的使用
Feb 22 #Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 #Python
Python3.6.x中内置函数总结及讲解
Feb 22 #Python
python自定义线程池控制线程数量的示例
Feb 22 #Python
Python实现多进程的四种方式
Feb 22 #Python
python在回调函数中获取返回值的方法
Feb 22 #Python
You might like
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
php实现简单加入购物车功能
2017/03/07 PHP
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
vue中多个倒计时实现代码实例
2019/03/27 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
python使用turtle库绘制树
2018/06/25 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Django中的文件的上传的几种方式
2018/07/23 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
python DataFrame 取差集实例
2019/01/30 Python
Python测试线程应用程序过程解析
2019/12/31 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
Europcar意大利:汽车租赁
2019/07/07 全球购物
运动会邀请函范文
2014/01/31 职场文书
工作保证书范文
2014/04/29 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
2014年度个人工作总结
2014/11/07 职场文书
大学生入党自荐书
2015/03/05 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
索尼ICF-36收音机评测
2022/04/30 无线电