{class foo(object):
def __enter__ (self):
print("Enter")
def __exit__(self,type,value,traceback):
print("Exit")
def method(self):
print("Method")
with foo() as instant:
instant.method()}
Execute this py file and console shows these message:
Enter
Exit
instant.method()
AttributeError: 'NoneType' object has no attribute 'method'
unable to find methods?
__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)
The problem is that your __enter__ method does not return self.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With