首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么类方法中所有的双下划线变量都是乱码?

为什么类方法中所有的双下划线变量都是乱码?
EN

Stack Overflow用户
提问于 2019-06-21 08:09:43
回答 2查看 155关注 0票数 3

编辑:目前的两个答案都谈到了类内部存在混乱的事实。我的问题是关于类方法中的值-请注意,方法作用域中的解析不同于类作用域,否则__CLASS将是可打印的。

在Python2.7和3.6中似乎就是这种情况。

例如,下面的代码

__GLOBAL = 'global'
_Bar__MANGLED_GLOBAL = 'mangled global'

class Bar(object):
    __CLASS = 'class'

    def baz(self):
        __LOCAL = 'local'
        try:
            print __LOCAL
        except Exception as e:
            print e
        try:
            print __CLASS
        except Exception as e:
            print e
        try:
            print __GLOBAL
        except Exception as e:
            print e
        try:
            print __MANGLED_GLOBAL
        except Exception as e:
            print e

Bar().baz()

将会给予

local
global name '_Bar__CLASS' is not defined
global name '_Bar__GLOBAL' is not defined
mangled global

我理解当有一个other.__x,或者需要一个类级__foo来等同于self.__foo时的逻辑,但这似乎是一个疏忽,类范围内的任何东西都会被自动重写。

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

https://stackoverflow.com/questions/56695329

复制
相关文章

相似问题

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