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写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
python+pandas分析nginx日志的实例
Apr 28 Python
python3个性签名设计实现代码
Jun 19 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
简单了解python元组tuple相关原理
Dec 02 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
Python selenium爬取微博数据代码实例
May 22 Python
实例讲解Python 迭代器与生成器
Jul 08 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 动态多文件上传
2009/01/18 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
Python完全新手教程
2007/02/08 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
css3 transform属性详解
2014/09/30 HTML / CSS
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
HTML5样式控制示例代码
2013/11/27 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
优秀党员转正的自我评价
2013/10/06 职场文书
公司新员工的演讲稿注意事项
2014/01/01 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
PyTorch中的torch.cat简单介绍
2022/03/17 Python