{class foo(object):
def __enter__ (self):
print(\"Enter\")
def __exit__(self,type,value,traceback):
print(\"Exit\")
def method(self):
The problem is that your __enter__
method does not return self
.
__enter__
should return self
:
class foo(object):
def __enter__ (self):
print("Enter")
return self
def __exit__(self,type,value,traceback):
print("Exit")
def method(self):
print("Method")
with foo() as instant:
instant.method()
yields
Enter
Method
Exit
If __enter__
does not return self
, then it returns None
by default. Thus, instant
is assigned the value None
. This is why you get the error message
'NoneType' object has no attribute 'method'
(my emphasis)