关于Python3 类方法、静态方法新解


Posted in Python onAugust 30, 2019

如下所示:

class Date:
 def __init__(self, year, month, day):
  self.year = year
  self.month = month
  self.day = day

 # 实例方法
 def tomorrow(self):
  self.day +=1

 def __str__(self):
  return '{}/{}/{}'.format(self.year,self.month,self.day)

 # 静态方法
 @staticmethod
 def format_date_str(date_str):
  year, month, day = tuple(date_str.split('-'))
  return Date(int(year),int(month),int(day))

 # 类方法
 # 这里的 cls 实际就是类本身,它将自己本身返回,不需要我们写返回的类名,更好一些
 @classmethod
 def format_str(cls, date_str):
  year, month, day = tuple(date_str.split('-'))
  return cls(int(year),int(month),int(day))

if __name__ == "__main__":
 new = Date(2018,12,12)
 print(new)
 new.tomorrow()
 print(new)

 # 现在我们想输入一个日期字符串需要怎么做呢?
 date_str = '2018-12-30'
 year, month, day = tuple(date_str.split('-')) # 这里利用了tuple的拆包属性,将分开的列表分别赋给变量
 new = Date(year,month,day)
 print(new)
 # 如果有静态方法,就会更加简单了
 new = Date.format_date_str('2019-12-01')
 print(new)
 # 但是静态方法还要将类的名称返回,那有没有更好的方法呢
 # 那就是类方法,类方法的原理就是 将输入的参数处理后 通过类方法返回一个实例对像,静态方法也是如此,但静态方法可以不返回实例 而返回其他的
 new = Date.format_str('2019-9-01')
 print(new)
 # 那么问题来了?什么使用用静态方法,什么时候使用类方法呢?
 # 原则上是:当需要返回实例时使用类方法,不需要返回实例对象时 直接使用静态方法就好了,
 # 例如我们做验证日期字符串是否合法的时候没必要返回实例,那就使用 静态方法就可以了

以上这篇关于Python3 类方法、静态方法新解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python进阶教程之模块(module)介绍
Aug 30 Python
对于Python的Django框架部署的一些建议
Apr 09 Python
Python 内置函数complex详解
Oct 23 Python
Python中动态创建类实例的方法
Mar 24 Python
Python内置函数reversed()用法分析
Mar 20 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
python pandas消除空值和空格以及 Nan数据替换方法
Oct 30 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
python连接mysql有哪些方法
Jun 24 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 #Python
简单的Python调度器Schedule详解
Aug 30 #Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 #Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 #Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 #Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 #Python
快速解决docker-py api版本不兼容的问题
Aug 30 #Python
You might like
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
JavaScript效率调优经验
2009/06/04 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
javascript实现根据身份证号读取相关信息
2014/12/17 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
原生js实现随机点名
2020/07/05 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
在pycharm中显示python画的图方法
2019/08/31 Python
使用python远程操作linux过程解析
2019/12/04 Python
keras.layer.input()用法说明
2020/06/16 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
部门年终奖分配方案
2014/05/07 职场文书
大型演出策划方案
2014/05/28 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android