关于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 ORM框架SQLAlchemy学习笔记之安装和简单查询实例
Jun 10 Python
python实现在目录中查找指定文件的方法
Nov 11 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
Python生成随机密码的方法
Jun 16 Python
详解flask入门模板引擎
Jul 18 Python
Python实现的简单计算器功能详解
Aug 25 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
Python如何实现的二分查找算法
May 27 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
python如何控制进程或者线程的个数
Oct 16 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启用sphinx全文搜索的实现方法
2014/12/24 PHP
php链式操作的实现方式分析
2019/08/12 PHP
JS实现self的resend
2010/07/22 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
python基础教程之udp端口扫描
2014/02/10 Python
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
python基于openpyxl生成excel文件
2020/12/23 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
敬老文明号事迹材料
2014/01/16 职场文书
安全检查管理制度
2014/02/02 职场文书
广播体操口号
2014/06/18 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书