关于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 相关文章推荐
详解Python2.x中对Unicode编码的使用
Apr 03 Python
在Django的上下文中设置变量的方法
Jul 20 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python 高级专用类方法的实例详解
Sep 11 Python
TensorFlow模型保存和提取的方法
Mar 08 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
Python I/O与进程的详细讲解
Mar 08 Python
Django异步任务之Celery的基本使用
Mar 23 Python
python名片管理系统开发
Jun 18 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
JavaScript 加号(+)运算符号
2009/12/06 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
vue中appear的用法
2017/08/17 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
简单了解python代码优化小技巧
2019/07/08 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
python3中rank函数的用法
2019/11/27 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
介绍一下SQL Server里面的索引视图
2016/07/31 面试题
大学生个人自我鉴定
2013/12/03 职场文书
药学专业个人的自我评价
2013/12/31 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
2014年评职称工作总结
2014/11/20 职场文书
工作失误检讨书范文
2015/01/26 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
windows系统安装配置nginx环境
2022/06/28 Servers