当前位置:  开发笔记 > 编程语言 > 正文

关于__class__的闭包

如何解决《关于__class__的闭包》经验,为你挑选了0个好方法。

我最近逐步完成了CPython源代码,特别是在编译期间查看类的符号表条目.

我碰到了typedef struct _symtable_entry结构的以下条目:

[-- other entries --]
unsigned ste_needs_class_closure : 1; /* for class scopes, true if a
                                         closure over __class__
                                         should be created */
[-- other entries --]

我似乎无法理解它,也无法找到实际设置的python代码示例ste_needs_class_closure == 1.在其他失败的尝试中,我尝试了以下方法:

class foo:
    y = 30
    def __init__(self):
        self.x = 50
    def foobar(self):
        def barfoo():
            print(self.x)
            print(y)
        return barfoo

但即使它执行,执行ste_needs_class_closure期间的价值0也不1是我希望的那样.

实际上改变这个值的功能对它drop_class_free没有多大帮助.不幸的是,它也没有任何赞美它的评论.

它实际上用于analyze_block评论:

/* Check if any local variables must be converted to cell variables */

我可以理解为一个概念,但无法找到它发生的例子.

我已经尝试在Python 3.4中搜索更新日志,这是该成员首次出现的版本,但未找到对它的引用.

那么,任何人都可以解释__class__上的闭包是什么意思,即类的局部变量何时被转换为单元变量?理想情况下,在执行过程中实际显示此行为的示例将非常棒.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有