关于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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
深入分析python数据挖掘 Json结构分析
Apr 21 Python
Python 中的Selenium异常处理实例代码
May 03 Python
Python enumerate函数功能与用法示例
Mar 01 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
python openCV获取人脸部分并存储功能
Aug 28 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
python实现对变位词的判断方法
Apr 05 Python
Python嵌入C/C++进行开发详解
Jun 09 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 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
php4与php5的区别小结(配置异同)
2011/12/20 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
PHP CURL使用详解
2019/03/21 PHP
表单提交验证类
2006/07/14 Javascript
javascript 数组排序函数
2009/08/20 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
python实现的简单文本类游戏实例
2015/04/28 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
python selenium 弹出框处理的实现
2019/02/26 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
基于python实现模拟数据结构模型
2020/06/12 Python
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
银行会计业务的个人自我评价
2013/11/02 职场文书
致全体运动员广播稿
2014/02/01 职场文书
理发店策划方案
2014/06/05 职场文书
社区清明节活动总结
2014/07/04 职场文书
目标责任书格式范文
2015/05/11 职场文书
让世界充满爱观后感
2015/06/10 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python