首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >试图弄清楚“with..as”结构在python中是如何工作的

试图弄清楚“with..as”结构在python中是如何工作的
EN

Stack Overflow用户
提问于 2014-04-27 00:18:38
回答 1查看 350关注 0票数 16

我正在努力学习python,结果我发现

with..as

构造,它的用法如下:

代码语言:javascript
复制
with open("somefile.txt", 'rt') as file:
    print(file.read()) 
    # at the end of execution file.close() is called automatically.

因此,作为一种学习策略,我尝试执行以下操作:

代码语言:javascript
复制
class Derived():

    def __enter__(self):
        print('__enter__')

    def __exit__(self, exc_type, exc_value, traceback):
        print('__exit__')

with  Derived() as derived:
    print(derived)

我得到了下面的输出:

代码语言:javascript
复制
__enter__
None
__exit__

我的问题是:

  • 为什么print(derived)返回None对象而不是Derived对象?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-27 00:22:22

名称derived绑定到由__enter__方法返回的对象,即None。尝试:

代码语言:javascript
复制
def __enter__(self):
    print('__enter__')
    return self

Docs:

object.__enter__(self)

输入与此对象相关的运行时上下文。with语句将此方法的返回值绑定到该语句的as子句中指定的目标(如果有的话)。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23313535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档