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的Django框架中使用通用视图的方法
Jul 21 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Ubuntu下安装PyV8
Mar 13 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
Python如何实现守护进程的方法示例
Feb 08 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
python调用摄像头拍摄数据集
Jun 01 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
Python打印特殊符号及对应编码解析
May 07 Python
python单元测试框架pytest的使用示例
Oct 07 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
php常用的工具开发整理
2019/09/26 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
python中enumerate函数用法实例分析
2015/05/20 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
python如何制作缩略图
2019/04/30 Python
Django和Flask框架优缺点对比
2019/10/24 Python
如何利用python进行时间序列分析
2020/08/04 Python
请说出以下代码输出什么
2013/08/30 面试题
晚归检讨书
2014/02/19 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
公司保密承诺书
2014/03/27 职场文书
村干部培训班主持词
2014/03/28 职场文书
单位委托书范本
2014/04/04 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
岗位说明书标准范本
2014/07/30 职场文书
陕西导游词
2015/02/04 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫