提问人:edvard_munch 提问时间:11/16/2023 更新时间:11/17/2023 访问量:58
编辑 Python 内置的 datetime 模块(只是为了测试内置模块的编辑工作原理)。但它仍然表现得像从未改变过一样
Editing Python's buit-in datetime module (just to to test how editing of built-in modules works). But it still behaves like it never changed
问:
在 Ubuntu 和 Windows 上都试过这个
Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:34:34) [MSC v.1928 32 bit (
Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.__file__
'C:\\Program Files\\python3810\\lib\\datetime.py'
然后编辑文件。只是为了测试,替换了 方法的返回行isoformat
class date
class date:
...
def isoformat(self):
"""Return the date formatted according to ISO.
This is 'YYYY-MM-DD'.
References:
- http://www.w3.org/TR/NOTE-datetime
- http://www.cl.cam.ac.uk/~mgk25/iso-time.html
"""
# return "%04d-%02d-%02d" % (self._year, self._month, self._day)
return "%04d-%02d" % (self._year, self._month)
__str__ = isoformat
重新加载了 Python shell,但 str 的返回值是一样的。
Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:34:34) [MSC v.1928 32 bit (
Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> d = datetime.date.today()
>>> d
datetime.date(2023, 11, 16)
>>> d.__str__()
'2023-11-16'
那么,这是否应该像这样工作,或者必须做其他事情?
答:
0赞
DamirX
11/17/2023
#1
你走错了路。 尝试使用从 datetime 模块对象继承,尽管它并不完全是微不足道的。
import datetime
class MyDate(datetime.date):
def __new__(cls, *args, **kwargs):
return super().__new__(cls, *args, **kwargs)
def isoformat(self):
return "%04d-%02d" % (self.year, self.month)
__str__ = isoformat
if __name__ == '__main__':
date = MyDate(1,2,3)
print(date)
评论
from _datetime import *
SystemError: initialization of _psycopg raised unreported exception