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检测字符串中是否包含某字符集合中的字符
May 21 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
Puppeteer使用示例详解
Jun 20 Python
python matplotlib库直方图绘制详解
Aug 10 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
Python socket处理client连接过程解析
Mar 18 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
Python实现手势识别
Oct 21 Python
golang特有程序结构入门教程
Jun 02 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中使用Oracle数据库(2)
2006/10/09 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
php Session无效分析资料整理
2016/11/29 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
python迭代器的使用方法实例
2013/11/21 Python
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Django实现单用户登录的方法示例
2019/03/28 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
python实现IOU计算案例
2020/04/12 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
计算机专业毕业生自荐信范文
2014/03/06 职场文书
党员志愿者活动总结
2014/06/26 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书