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实现的一个简单LRU cache
Sep 26 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
Python语言快速上手学习方法
Dec 14 Python
python实现微信防撤回神器
Apr 29 Python
python实现批量nii文件转换为png图像
Jul 18 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
Python LMDB库的使用示例
Feb 14 Python
Python基础知识之变量的详解
Apr 14 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中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
javascript document.compatMode兼容性
2010/02/23 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
python文件和目录操作方法大全(含实例)
2014/03/12 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
python实现读取命令行参数的方法
2015/05/22 Python
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Python正则表达式学习小例子
2020/03/03 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
求职简历中的自我评价分享
2013/12/08 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书