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)

总结:

  1. 类方法可能需要传入参数,也可能不需要参数,但参数肯定不是类的实例。
  2. 实例方法则相反,需要传入一个类实例作为参数,具体方法有两种(或更多?)。

这让我意识到之前的一篇博文是关于Python的静态方法和类成员方法的(http://www.cnblogs.com/Simon-xm/p/3890942.html)。

这里搜索可知python有,实例方法、静态方法、类方法、类变量、实例变量。地址:http://www.cnblogs.com/Simon-xm/p/3935809.html

时间: 2024-12-22 03:27:34

python——从datetime模块探索python的数据架构的相关文章

基于Python的datetime模块和time模块源码阅读分析

目录 1 前言  2 datetime.pyi源码分步解析 2.1 头部定义源码分析 2.2 tzinfo类源码分析 2.3 date类源码分析 2.4 time类源码分析 2.5 timedelta类源码分析 2.6 datetime类源码分析 2.7 格式化字符串 3 time模块time.pyi源码解析 1 前言 最近工作需求上对于datetime模块中的方法调用比较多,有时还要返回指定的格式,以及大小比较等情况.发现使用Python自带的datetime模块可以很好地实现相关需求,但是对

python的datetime模块实用小记

今天简单整理一下python的datetime模块使用中遇到的方法,感觉这个模块相当灵活, 实现相同的需求可以用多种方法解决. 所以我也不多描述和讲解这个模块的具体内容了, 仅作为记录和索引. 参考资料: https://docs.python.org/2/library/datetime.html 主要类: datetime:https://docs.python.org/2/library/datetime.html#datetime-objects timedelta: https://d

Python中datetime模块中strftime/strptime函数

python中datetime模块非常好用,提供了日期格式和字符串格式相互转化的函数strftime/strptime 1.由日期格式转化为字符串格式的函数为: datetime.datetime.strftime() 2.由字符串格式转化为日期格式的函数为: datetime.datetime.strptime() 3.两个函数都涉及日期时间的格式化字符串,列举如下: %a 星期几的简写;如 星期三为Web %A 星期几的全称;如 星期三为Wednesday %b 月份的简写; 如4月份为Ap

Python的datetime模块分析

datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime.date:表示日期的类 2.datetime.datetime:表示日期时间的类 3.datetime.time:表示时间的类 4.datetime.timedelta:表示时间间隔,即两个时间点的间隔 5.datetime.tzinfo:时区的相关信息 一.首先看一下datetime.date类

python中datetime模块

Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接口则更直观.更容易调用.今天就来讲讲datetime模块. datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最 小.最大年份.其中,MINYEAR = 1,MAXYEAR = 9999

python中 datetime模块的详解(转载)

Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接口则更直观.更容易调用.今天就来讲讲datetime模块. datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最 小.最大年份.其中,MINYEAR = 1,MAXYEAR = 9999

python的datetime模块

导入datetime模块后用dir(datetime)命令查看 在datetime模块下有几个小模块,或叫类 (一)date小模块.处理年月日 也是先用dir(datetime.date)查看一下 其中有那么几个方法 1:today()显示今天的日期 如果嫌这样太麻烦,可以单独导入date这个小模块 2:date小模块是个类,可以对它实例化,可以加个日期参数 这样就可以对这个对象进行操作了 3:year  month day分别取得日期对象中的年月日. 4:weekday(),查看一周中的第几天

python调用自定义模块方法 python培训中心

Python模块是一个Python文件,以.py结尾,包括了Python对象定义和Python语句,能让Python代码段更有逻辑性.更好用.更易懂,既然Python模块有这么多好处,那么该如何引用Python模块呢? import语句 自定义模块可以采用import语句来进行引入,其操作步骤是先导入模块,再调用模块中包含的函数,可将自定义模块放入当前目录,便于解释器路径搜索,以下是导入自定义hello.py模块,并调用World函数的实例: #!/usr/bin/python # -*- co

Python基础之模块、数据类型及数据类型转换

一.模块 1.标准库 不需要安装,直接调入使用的模块. import sys模块: import sys print(sys.path) #打印环境变量绝对路径 print(sys.argv) #打印当前脚本相对路径 打印脚本第二个参数:print(sys.argv [2]) import os 模块: import os # cmd_res=os.system("dir") #只执行命令,不保存结果 cmd_res=os.popen("dir").read() #