首页 > 解决方案 > 使用“with”创建的对象返回“无”

问题描述

我正在尝试编写一个简单的银行系统。我应该提一下,我是一个 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'。它们不应该是对象的引用吗?我真的很感激一些帮助!

标签: pythonclasswith-statementcontextmanager

解决方案


请注意以下文档__enter__

with 语句将此方法的返回值绑定到as语句子句中指定的目标(如果有) 。

你没有从__enter__. self从它返回:

def __enter__(self):
    return self

推荐阅读