如果类定义了初始化之后是否需要返回
来源:4-12 python中的with语句

慕雪3436312
2021-10-22
class Sample:
def __enter__(self):
print(f'{self.name}入口')
def __exit__(self, exc_type, exc_val, exc_tb):
print(f'{self.name}出口')
def __init__(self, name):
self.name = name
def do_something(self):
print(f'{self.name}工作中')
with Sample(name='我是1') as s:
s.do_something()
出现了一下错误
Traceback (most recent call last):
File “with_test.py”, line 36, in
s.do_something()
AttributeError: ‘NoneType’ object has no attribute ‘do_something’
Process finished with exit code 1
写回答
1回答
-
bobby
2021-10-23
是的,你要在enter中 return self 如下:
class Sample: def __enter__(self): print(f'{self.name}入口') return self def __exit__(self, exc_type, exc_val, exc_tb): print(f'{self.name}出口') def __init__(self, name): self.name = name def do_something(self): print(f'{self.name}工作中') with Sample(name='我是1') as s: s.do_something()
00
相似问题