对Python中的@classmethod用法详解


Posted in Python onApril 21, 2018

在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法。

总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的。

不过还是好奇去查了一下。

大致可以理解为:使用了@classmethod修饰的方法是类专属的,而且是可以通过类名进行调用的。为了能够展示其与一般方法的差异,写一段简单的代码如下:

class DemoClass:
    @classmethod
    def classPrint(self):
       print("class method")
    def objPrint(self):
       print("obj method")
 
obj = DemoClass()
obj.objPrint()
obj.classPrint()
 
DemoClass.classPrint()
DemoClass.objPrint()

程序的执行结果如下:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python classmethod.py
obj method
class method
class method
Traceback (mostrecent call last):
 File "classmethod.py", line 13, in<module>
  DemoClass.objPrint()
TypeError: unboundmethod objPrint() must be called with DemoClass instance as first argument (gotnothing instead)
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$exit
exit
 
E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08>pythonclassmethod.py
obj method
class method
class method
Traceback (mostrecent call last):
 File "classmethod.py", line 13, in<module>
  DemoClass.objPrint()
TypeError:objPrint() missing 1 required positional argument: 'self'

上面的程序执行,我是在两个操作系统中的两个Python版本环境中进行的。不管是Py2还是Py3,这方面的设计都是差不多的。总体来说,这种用法还是很微妙的。由于没有足够的实战历练,暂时还说不好这个东西有什么更好的优势。

这篇对Python中的@classmethod用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python strip() 函数和 split() 函数的详解及实例
Feb 03 Python
Python实现两个list对应元素相减操作示例
Jun 09 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
利用Tkinter(python3.6)实现一个简单计算器
Dec 21 Python
Python3 replace()函数使用方法
Mar 19 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
Python WEB应用部署的实现方法
Jan 02 Python
python的pip有什么用
Jun 17 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 Python
python 经纬度求两点距离、三点面积操作
Jun 03 Python
python中if和elif的区别介绍
Nov 07 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 #Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 #Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 #Python
使用pandas读取csv文件的指定列方法
Apr 21 #Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 #Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 #Python
对pandas进行数据预处理的实例讲解
Apr 20 #Python
You might like
非常全面的php日期时间运算汇总
2015/11/04 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
Vue动态实现评分效果
2017/05/24 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
记一次react前端项目打包优化的方法
2020/03/30 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
python处理数据,存进hive表的方法
2018/07/04 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
pycharm快捷键汇总
2020/02/14 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
应届护士推荐信
2013/11/16 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
介绍信格式
2015/01/30 职场文书
公司禁烟通知
2015/04/23 职场文书
大学生支教感言
2015/08/01 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP