我读过对象的__输入__()和__ exit __()方法,每次使用'with'时都会被调用。我明白,对于用户定义的对象,你可以自己定义这些方法,但我不明白这是如何工作的内置对象/功能,如“开放”,甚至测试案例。Python内置对象的__enter __()和__exit __()定义在哪里?
此代码按预期工作,我以为它关闭与__出口__()文件:
with open('output.txt', 'w') as f:
f.write('Hi there!')
或
with self.assertRaises(ValueError):
remove_driver(self.driver) # self refers to a class that inherits from the default unittest.TestCase
然而,有没有这样的__进入__()或__退出__( )任一对象上方法时我检查它:
那么'open'是如何与'with'一起工作的呢?不应该支持上下文管理协议的对象有__输入__()和__退出__()方法定义和可检查?
请不要使用屏幕截图来共享文本。 – Elizafox
在dir中打开''__exit__'(open('/ dev/null'))' – robyschek
'open'不是支持上下文管理器协议的对象。它的*返回值*是支持该协议的对象。同样,对于'assertRaises'。 – BrenBarn