原始类型比较与对象比较
之间的基本区别是什么?我想比较两个日期,它可以通过原始类型轻松完成,那么我为什么要为它创建对象并比较对象呢?
import datetime
fmt = '%Y-%m-%d'
d = '2015-10-23'
e = '2015-10-23'
d == e ==> True
d1 = datetime.datetime.strptime(d,fmt)
d2 = datetime.datetime.strptime(e,fmt)
d1 == d2 ==> True
d = '2015-10-03'
e = '2015-10-04'
d > e ==> False
e > d ==> True
如果原始类型工作正常那么为什么我们需要为此创建对象?
哪一个更好用?
答案 0 :(得分:1)
当存在不合理格式的日期时,原始类型比较可能导致错误的结果答案。
E.g
$(".myClass").on("click", function () {
var $this = $(this);
if ($this.hasClass("show") {
$this.removeClass("show");
} else {
$this.addClass("show");
}
});
答案 1 :(得分:1)
您列出的格式称为isoformat
。
您可以通过致电dateObj.isoformat()
来了解此信息。
在ISO格式(yyyy-mm-dd)中,你实际上是在比较日期的字符串等价物,这恰好会给你与字符串比较给出的相同结果......并且使用中没有任何错误那。
将日期直接与其对应方进行比较可能会被视为“更安全”b / c您可能会提供不兼容的字符串格式并得出错误的结果(例如:将2015-10-01与2015-19-01进行比较)。
最后,要回答关于对象比较的一般性问题,对于您自己的自定义对象,您需要定义正确的__hash__
和__eq__
函数。另外google:python的functools.total_ordering
可以更自然地对比自定义对象