下面是子类日期时间的示例代码。
由于 pass 是唯一的子类主体,因此预计会保留 datetime 的方法“__new__”。
以下代码已在 Mac OS 10.12.3 上的 Python 3.4.2 和 Arch Linux 上的 Python 3.6.0 上进行了测试。在这两种情况下,结果相同。
问题是,为什么 'a' 是 MyDatetime 的一个实例,而 'b' 不是 MyDatetime 的一个实例,而它们仅在参数 tz 上有所不同?
感谢您的反馈意见。现在继续这个例子......
#!/usr/bin/env python3
from datetime import datetime
from datetime import timezone
class MyDatetime(datetime):
pass
if __name__ == '__main__':
dt = 1231798102
a = MyDatetime.fromtimestamp(dt)
b = MyDatetime.fromtimestamp(dt, tz=timezone.utc)
print('Why is isinstance(a, MyDatetime) == {}, while isinstance(b, MyDatetime) == {}?'.format(isinstance(a, MyDatetime), isinstance(b, MyDatetime)))
上面的示例打印以下内容:'为什么 isinstance(a, MyDatetime) == True,而 isinstance(b, MyDatetime) == False?
这边type(a) == <class '__main__.MyDatetime'>
,一会儿type(b) == <class 'datetime.datetime'>
。