我是module-wrapper库的创建者,也是aioify库的创建者之一。问题出现在module-wrapper
库内部的魔术方法包装中(我从module_wrapper.wrap
调用aioify.aioify
,但这没关系)。
我有以下代码:
#!/usr/bin/env python
from aioify import aioify
async def main():
from pathlib import Path
# noinspection PyPep8Naming
AioPath = aioify(obj=Path)
return await AioPath.create('/tmp')
if __name__ == '__main__':
import asyncio
loop = asyncio.get_event_loop()
path = loop.run_until_complete(main())
path_str = str(path)
print(path_str)
我希望获得以下输出:
/tmp
但是我明白了:
<module_wrapper.wrap.<locals>.ObjectProxy object at 0x7f64266a9b00>
我不明白为什么。当我打电话时:
path_str = path.__str__()
print(path_str)
我得到了我期望的结果:
/tmp
当我设置断点inside时,魔术方法包装器功能调试器不会停止。
UPD0:
要重现此内容,您需要安装module-wrapper
和aioify
(从tarball安装,因为它没有在PyPI上发布)。不要忘记之前创建virtualenv!):
pip install module-wrapper==0.1.26
pip install https://github.com/yifeikong/aioify/archive/0.3.0.zip