python——从datetime模块探索python的数据架构
问题出现于我试图向自建网页中加入实时时间开始。
我之前已经知道python中有有关事件和日期的模块datetime。以下导入datetime并作实验。
>>> import datetime
>>> type(datetime)
<class 'module'>
可知datetime属于module(模块)类。此外,类似的时间相关模块还有time和calendar。
There are two kinds of date and time objects: “naive” and “aware”.——这里有两种类型于日期和时间有关的对象:自然对象 和 意识对象。
datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最小、最大年份。其中,MINYEAR = 1,MAXYEAR = 9999。
————————————————————————模块中可以还有常量————————————————————————————————
探究datetime.MINYEAR和datetime.MAXYEAR源码:
C:\Python33\Lib\datetime.py
def _cmp(x, y):
return 0 if x == y else 1 if x > y else -1 MINYEAR = 1
MAXYEAR = 9999
_MAXORDINAL = 3652059 # date.max.toordinal() _DAYS_IN_MONTH = [None, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] _DAYS_BEFORE_MONTH = [None]
dbm = 0
注:def _cmp(x,y):单下划线函数。
"单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
"双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
————————————————————————————————————————————————————————————————————
so,datetime是一个模块,从文件系统上看是一个.py文件。当然,模块也可以是一个还有__init__.py的文件夹。
- class datetime.date
- class datetime.time
- class datetime.datetime
- class datetime.timedelta
- class datetime.tzinfo
- class datetime.timezone
以上是datetime模块中的类,另外上述类的继承关系如下:
object:
timedelta
tzinfo
timezone
time
date
datetime
————————————————————————————————————————————————————————————————————
通过使用类似object_name=datetime.datetime_class(attr1,attr2,....)的语句,可以把上述datetime模块中的类实例化(instance)。
官方文档里将datetime类成员分为:类方法(class methods)、类属性(Class attributes)、实例方法(Instance methods) 。
关于类方法和实例方法的区别有如下代码作为实验:
例:类方法datetime.today()
>>> a=datetime.datetime.today()
>>> a
datetime.datetime(2014, 8, 26, 19, 29, 27, 18840)
>>> print(a)
2014-08-26 19:29:27.018840
>>> datetime.datetime.today()
datetime.datetime(2014, 8, 26, 19, 29, 58, 992818)
实例方法datetime.date()和datetime.replace()
>>> a.date() #实例传入方法一
datetime.date(2014, 8, 26)
>>> datetime.datetime.date(a) #实例传入方法二
datetime.date(2014, 8, 26)
>>> a.replace(2000,1,1) #实例传入方法一
datetime.datetime(2000, 1, 1, 19, 29, 27, 18840)
>>> datetime.datetime.replace(a,1993,5,4) #实例传入方法二
datetime.datetime(1993, 5, 4, 19, 29, 27, 18840)
总结:
- 类方法可能需要传入参数,也可能不需要参数,但参数肯定不是类的实例。
- 实例方法则相反,需要传入一个类实例作为参数,具体方法有两种(或更多?)。实例方法源码中的第一个参数默认为self,代指实例。
这让我意识到之前的一篇博文是关于Python的静态方法和类成员方法的(http://www.cnblogs.com/Simon-xm/p/3890942.html)。
这里搜索可知python有,实例方法、静态方法、类方法、类变量、实例变量。地址:http://www.cnblogs.com/Simon-xm/p/3935809.html
python——从datetime模块探索python的数据架构的更多相关文章
- 基于Python的datetime模块和time模块源码阅读分析
目录 1 前言 2 datetime.pyi源码分步解析 2.1 头部定义源码分析 2.2 tzinfo类源码分析 2.3 date类源码分析 2.4 time类源码分析 2.5 timedelta ...
- python的datetime模块处理时间
python的datetime模块主要用来处理时间,里面包含很多类,包括timedelay,date,time,datetime等 开发中经常会用到模块里面的datetime类,这是一个表示日期时间的 ...
- 孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块
孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.datetime模块 dateti ...
- python使用datetime模块计算各种时间间隔的方法
python使用datetime模块计算各种时间间隔的方法 本文实例讲述了python使用datetime模块计算各种时间间隔的方法.分享给大家供大家参考.具体分析如下: python中通过datet ...
- python中datetime模块
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致.相比于time模块 ...
- python处理时间--- datetime模块
1 Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供的接口与C标准库time.h基本一致.相比于tim ...
- Python,datetime模块实例
Python的标准模块datetime模块,在我们的工作中应用非常频繁,下面对datetime中常用的方法进行了总结和测试:对每一个方法都使用了单元测试框架Unittest来配合测试. 主要的类型有: ...
- Python的datetime模块分析
datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime ...
- python中 datetime模块的详解(转载)
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致.相比于time模块 ...
随机推荐
- Traceroute(路由追踪)的原理及实现
现实世界中的网络是由无数的计算机和路由器组成的一张的大网,应用的数据包在发送到服务器之前都要经过层层的路由转发.而Traceroute是一种常规的网络分析工具,用来定位到目标主机之间的所有路由器 原理 ...
- C 格式化显示时间(time.h)
转自:http://www.cnblogs.com/xudong-bupt/p/3550157.html C/C++程序中需要程序显示当前时间,可以使用标准函数strftime. 函数原型:size_ ...
- clojure中符号symbols 和变量vars的正确理解
原地址 http://stackoverflow.com/questions/11662084/why-does-clojure-distinguish-between-symbols-and-va ...
- 限制EditText必须输入中文的方法
给EditText做限制时,我们想要输入的字符串必须都是中文,不出现任何其他字符,下面的类可以很好的实现这个要求. InputLenLimit.java package com.kale.button ...
- Mysql中的条件语句if、case
Mysql中的条件语句在我们对数据进行转换的时候比较有用,这样就不需要创建中转表. IF 函数 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> ...
- maven清理.lastUpdated文件maven清理下载失败的jar,方便重新下载
因网络或其他的原因,maven下载jar等文件失败后,会在目录中存在 *.jar.lastUpdated ,如:xmlpull-1.1.3.1.jar.lastUpdated,此时,代码编译时会一直 ...
- scala编程第16章学习笔记(2)
转换列表:toIterator, toArray,copyToArray List类的toArray方法将递归存放的列表转换为连续存放的数组 Array类的toList方法将连续存放的数组转换为递归存 ...
- scala编程第16章学习笔记(1)
List列表的基本操作 head方法获得列表的第一个元素 tail方法获得列表除第一个元素之外的其它元素 isEmpty:判断列表是否为空,空的话返回真 last:获得列表最后一个元素 init:获得 ...
- MultipleRegularExpressionAttribute MVC中扩展自定义验证规则
好久都没有写博客,最近工作中没有什么可写的,公司的项目是以业务为重,技术含量实在不咋的.这次sprint中有一个要求就是password必须一些规则,比如给你一些正则表达式必须满足几个,直接看效果吧 ...
- Binary Tree ZigZag Level Order Traversal leetcode java
题目: Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from lef ...