对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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
Python学习入门之区块链详解
Jul 25 Python
numpy排序与集合运算用法示例
Dec 15 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
如何通过python画loss曲线的方法
Jun 26 Python
使用django实现一个代码发布系统
Jul 18 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
Python使用uuid库生成唯一标识ID
Feb 12 Python
Django通过json格式收集主机信息
May 29 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
Python基于正则表达式实现计算器功能
Jul 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
PHP Include文件实例讲解
2019/02/15 PHP
新手入门常用代码集锦
2007/01/11 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
javascript 操作文件 实现方法小结
2009/07/02 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
Python中的高级函数map/reduce使用实例
2015/04/13 Python
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
Python中使用不同编码读写txt文件详解
2015/05/28 Python
Python正则简单实例分析
2017/03/21 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python基础 range的用法解析
2019/08/23 Python
python批量处理文件或文件夹
2020/07/28 Python
python判断元素是否存在的实例方法
2020/09/24 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
师范应届生求职信
2013/11/15 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
焦点访谈观后感
2015/06/11 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
OpenCV实现普通阈值
2021/11/17 Java/Android
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers