gpt4 book ai didi

Python 拉皮条/猴子修补

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:36 25 4
gpt4 key购买 nike

我想做一件简单的事情:monkey-patch datetime。我不能完全那样做,因为 datetime 是一个 C 类。

所以我写了下面的代码:


from datetime import datetime as _datetime<p></p>

<p>class datetime(_datetime):
def withTimeAtMidnight(self):
return self.replace(hour=0, minute=0, second=0, microsecond=0)
</p>

这是在我称为 pimp 的包中名为 datetime.py 的文件中。

从我收到的错误消息中:

Traceback (most recent call last):  File "run.py", line 1, in     from pimp.datetime import datetime  File "/home/lg/src/project/library/pimp/datetime/datetime.py", line 1, in     from datetime import datetime as _datetimeImportError: cannot import name datetime

我假设我不能让一个名为 datetime 的模块从另一个名为 datetime 的模块导入任何内容。

我应该如何继续将我的模块和类命名为 datetime

最佳答案

将您的模块放入一个包中,例如 your_lib.datetime。您不应该为顶级模块使用 datetime 名称。

如果您使用的是 Python 2,则在顶部添加:

from __future__ import absolute_import

禁止包内的隐式相对导入。那么如果你的目录结构是:

your_lib/
├── datetime.py
└── __init__.py

以下命令有效:

$ python -c 'import your_lib.datetime'

datetime.py 是:

from __future__ import absolute_import
from datetime import timedelta

关于Python 拉皮条/猴子修补,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com