对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 正确保留多位小数的实例
Jul 16 Python
python保存网页图片到本地的方法
Jul 24 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
Python之pymysql的使用小结
Jul 01 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
聊聊python中的循环遍历
Sep 07 Python
Python语言编写智力问答小游戏功能
Oct 13 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
mysq GBKl乱码
2006/11/28 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
浅析php工厂模式
2014/11/25 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
OpenLayers3实现图层控件功能
2020/09/25 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
Python实现的tab文件操作类分享
2014/11/20 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
基于python中theano库的线性回归
2018/08/31 Python
详解pandas赋值失败问题解决
2020/11/29 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
会计专业应届生求职信
2013/11/24 职场文书
大学生村官任职感言
2014/01/09 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
出国留学计划书
2014/04/27 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
天鹅湖观后感
2015/06/09 职场文书
高三生物教学反思
2016/02/22 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android