Python time.time()和datetime.datetime.now()在描述符中使用时不获取当前时间

Python time.time()和datetime.datetime.now()在描述符中使用时不获取当前时间,python,Python,用Python编码时,获取当前时间的常用方法是time.time()或datetime.datetime.now()。但我从未怀疑过他们的结果,直到以下代码: import time class A(object): def __get__(self, instance, owner): print '__get__ is run' return time.time() def __set__(self, instance, value):

用Python编码时,获取当前时间的常用方法是
time.time()
datetime.datetime.now()
。但我从未怀疑过他们的结果,直到以下代码:

import time

class A(object):
    def __get__(self, instance, owner):
        print '__get__ is run'
        return time.time()
    def __set__(self, instance, value):
        print('let me set, but i will not', value)

class C(object):
    a = A()

c1 = C()
c2 = C()
print(c1.a)
c1.a = time.time()
print(c1.a)
print('-' * 20)
print(c2.a)
该代码的结果是:

__get__ is run
1512115138.19
('let me set, but i will not', 1512115138.188)
__get__ is run
1512115138.19
--------------------
__get__ is run
1512115138.19
[Finished in 0.2s]
到底发生了什么事?为什么这三个
time.time()
调用得到相同的结果? 同样的结果也适用于
datetime.datetime.now()
。Python2和Python3中的结果相同。
我找不到一些python技术来解释它。

实际上,这是一个关于精度的问题,请检查这个。您可以看到更精确的输出:

__get__ is run
1512115904.6300762
let me set, but i will not 1512115904.631677
__get__ is run
1512115904.6346197
--------------------
__get__ is run
1512115904.6372328

实际上,这是一个关于精度的问题,检查一下这个。您可以看到更精确的输出:

__get__ is run
1512115904.6300762
let me set, but i will not 1512115904.631677
__get__ is run
1512115904.6346197
--------------------
__get__ is run
1512115904.6372328
这应该对你有帮助这应该对你有帮助这就是:)谢谢!原来如此:)谢谢!