Python 拉皮条/猴子修补
Python pimping / monkey-patching
我想做一件简单的事情:monkey-patch datetime
。我不能完全那样做,因为 datetime
是 C class.
所以我写了下面的代码:
from datetime import datetime as _datetime</p>
<p>class 日期时间(_datetime):
def withTimeAtMidnight(self):
return self.replace(时=0,分=0,秒=0,微秒=0)
</pre>
这是一个名为 datetime.py 的文件,位于我称为 pimp 的包中。
根据我收到的错误消息:
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 _datetime
ImportError: cannot import name datetime
我假设我无法让名为 datetime
的模块从另一个名为 datetime
的模块导入任何内容。
我应该如何继续保留我的模块和 class 命名为 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
我想做一件简单的事情:monkey-patch datetime
。我不能完全那样做,因为 datetime
是 C class.
所以我写了下面的代码:
from datetime import datetime as _datetime</p> <p>class 日期时间(_datetime): def withTimeAtMidnight(self): return self.replace(时=0,分=0,秒=0,微秒=0) </pre>
这是一个名为 datetime.py 的文件,位于我称为 pimp 的包中。
根据我收到的错误消息:
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 _datetime ImportError: cannot import name datetime我假设我无法让名为
datetime
的模块从另一个名为datetime
的模块导入任何内容。我应该如何继续保留我的模块和 class 命名为
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