首页 技术 正文
技术 2022年11月9日
0 收藏 592 点赞 3,310 浏览 2209 个字

问题出现于我试图向自建网页中加入实时时间开始。

我之前已经知道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 -1MINYEAR = 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. 实例方法则相反,需要传入一个类实例作为参数,具体方法有两种(或更多?)。实例方法源码中的第一个参数默认为self,代指实例。

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

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

上一篇: NGINX高并发配置
下一篇: mysql系统变量
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295