考虑 Python3.9 中的以下讨论/功能: https ://bugs.python.org/issue24416
简而言之,决定将结果datetime.date.isocalendar
更改为 anamedtuple
而不是tuple
。
datetime.IsoCalendarDate
现在,我可以看到这样做的好处,但他们也决定将新对象(
所以我的问题是,他们为什么要直接创建对象和“腌制和解封”对象需要稍微不同的流程?
例如:
import datetime
from pathlib import Path
import pickle
RESULTS_CACHE_PICKLE = Path('cache.pickle')
if RESULTS_CACHE_PICKLE.is_file():
with open(RESULTS_CACHE_PICKLE, 'rb') as f:
icd = pickle.load(f)
else:
icd = datetime.date(2019, 1, 1).isocalendar()
with open(RESULTS_CACHE_PICKLE, 'wb') as f:
pickle.dump(icd, f)
print(icd.year)
结果是:
$ python icd_test.py
2019
$ python icd_test.py
Traceback (most recent call last):
File "icd_test.py", line 19, in <module>
print(icd.year)
AttributeError: 'tuple' object has no attribute 'year'
这种不一致对我来说看起来很不稳定。它是否发生在该语言的其他地方?