[问题] 如何强制使用 with statement

楼主: ResolaQQ (ResolaQQ)   2015-12-21 18:14:16
直觉的想法是在 __enter__ 的时候加个变量,执行其他函数的时候检查,像这样
class Test(object):
def __init__(self):
self._with_statement = False
def __enter__(self):
self._with_statement = True
def __exit__(self, type, value, traceback):
pass
def do_something(self):
assert(self._with_statement)
如此一来,如果没用到 with statement,执行任何函数都会出错
但是这写法怎么看怎么蠢,也有漏写 assert 的可能
请问有没有比较好的写法,既可以做到使用者防呆也能做到开发者防呆?
作者: CaptainH (Cannon)   2015-12-21 22:24:00
我觉得这样挺好的啊另外如果没有assert也不会出错的话,又何必非要逼人用with?

Links booklink

Contact Us: admin [ a t ] ucptt.com