gpt4 book ai didi

python - 自己的类使用with语句需要注意什么?

转载 作者:太空狗 更新时间:2023-10-29 21:06:09 25 4
gpt4 key购买 nike

我计划使用方便的 with 为我的一个 Python 类实现类似 C++ 的构造函数/析构函数功能陈述。到目前为止,我只针对文件 IO 遇到过此语句,但我认为它对基于连接的通信任务也很有帮助,比如 socketsdatabase connections .最终需要关闭的东西。

在 PEP 343(上面链接)中说,with 需要方法 __enter____exit__,以及我的直接实现这似乎按预期工作。

class MyConnection:
def __init__(self):
pass
def __enter__(self):
print "constructor"
# TODO: open connections and stuff
# make the connection available in the with-block
return self
def __exit__(self, *args):
print "destructor"
# TODO: close connections and stuff

with MyConnection() as c:
# TODO: do something with c
pass

产生输出(如预期):

constructor
destructor

真的应该这么简单吗?除此之外还有哪些需要注意的地方?为什么这么多库(显然)还缺少此功能?我错过了什么吗?

最佳答案

(a) 就这么简单

(b) 另一种方法是装饰器函数,它装饰函数(和类,但不适用于此用例),并且还允许在包装函数之前和之后调用代码。那些似乎更常见一些。

(c) 我认为您没有遗漏任何东西。

关于python - 自己的类使用with语句需要注意什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908940/

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