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 while 循环使用的简单实例
Jun 08 Python
Python 实现链表实例代码
Apr 07 Python
python记录程序运行时间的三种方法
Jul 14 Python
利用Django-environ如何区分不同环境
Aug 26 Python
Python3.5多进程原理与用法实例分析
Apr 05 Python
python3字符串操作总结
Jul 24 Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 Python
python三引号如何输入
Jul 06 Python
python matplotlib绘制三维图的示例
Sep 24 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 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
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
Javascript的闭包详解
2014/12/26 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
python实现的解析crontab配置文件代码
2014/06/30 Python
Python实现的一个简单LRU cache
2014/09/26 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
Python实现密码薄文件读写操作
2019/12/16 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
Python是如何进行类型转换的
2013/06/09 面试题
费用会计岗位职责
2014/01/01 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
模范班主任事迹材料
2014/12/17 职场文书
北京天坛导游词
2015/02/12 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript
python实现简单石头剪刀布游戏
2021/10/24 Python