如何解决使用“ with”创建的对象返回“ None”
我正在尝试编写一个简单的银行系统。我应该提一下,我有点Python菜鸟。为此,我编写了一个“帐户”课程。 这是代码的重要部分:
class Account:
def __init__(self,_key,name,money):
self.key = _key
self.name = name
self.money = money
self.listhistory = [['start',self.money,datetime.datetime.Now()
]]
def __enter__(self):
pass
def __exit__(self,exc_type,exc_value,exc_tb):
pass
def __str__(self):
return str(self.key)
def __repr__(self):
return (f'{self.__class__.__name__}('
f'{self.key},'
f'{self.name},'
f'{self.money})')
当我使用
import bank
with bank.Account(1,'name1',500) as name1:
pass
with bank.Account(2,'name2',500) as name2:
pass
,代码执行没有错误,但是'name1'和'name2'均为'None'。它们不应该是对象的引用吗?我真的很感谢您的帮助!
解决方法
请注意documentation for __enter__
:
with语句会将此方法的返回值绑定到该语句的
as
子句中指定的目标(如果有)。
尽管您没有从__enter__
返回任何信息。从中返回self
:
def __enter__(self):
return self
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。