关于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实现的一只从百度开始不断搜索的小爬虫
Aug 13 Python
详解Python中的strftime()方法的使用
May 22 Python
详解详解Python中writelines()方法的使用
May 25 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
一道python走迷宫算法题
Jan 22 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
Python弹出输入框并获取输入值的实例
Jun 18 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
Python 中Operator模块的使用
Jan 30 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 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+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python中遍历文件的3个方法
2014/09/02 Python
浅谈django orm 优化
2018/08/18 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python networkx包的实现
2020/02/14 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
中国梦的演讲稿
2014/01/08 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
爱护公共设施标语
2014/06/24 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
小马王观后感
2015/06/11 职场文书
三国演义读书笔记
2015/06/25 职场文书
500字作文之难忘的同学
2019/12/20 职场文书