如何从类中访问Python模块的私有变量

2023-12-08

在 Python 3 中,为类变量添加前缀使其成为私有的(通过修改类中的名称)。如何访问类中的模块变量?

例如,以下两种方法不起作用:

__a = 3
class B:
    def __init__(self):
        self.a = __a
b = B()

结果是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __init__
NameError: name '_B__a' is not defined

Using global也没有帮助:

__a = 3
class B:
    def __init__(self):
        global __a
        self.a = __a
b = B()

结果是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in __init__
NameError: name '_B__a' is not defined

Running locals()表明变量__a完好无损地存在:

>>> locals()
{'__package__': None, '__name__': '__main__',
 '__loader__': <class '_frozen_importlib.BuiltinImporter'>,
 '__doc__': None, '__a': 3, 'B': <class '__main__.B'>,
 '__builtins__': <module 'builtins' (built-in)>, '__spec__': None}

[添加换行符以提高可读性]

在模块中运行相同的代码(而不是解释器)会产生完全相同的行为。使用 Anaconda 的Python 3.5.1 :: Continuum Analytics, Inc..


它很丑陋,但你可以访问全局变量:

__a = 3
class B:
    def __init__(self):
        self.a = globals()["__a"]
b = B()

您还可以将其放入字典中:

__a = 3

d = {"__a": __a}

class B:
    def __init__(self):
        self.a = d["__a"]
b = B()

或者列表、元组等和索引:

__a = 3

l = [__a]

class B:
    def __init__(self):
        self.a = l[0]
b = B()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从类中访问Python模块的私有变量 的相关文章

  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • PySpark groupByKey 返回 pyspark.resultiterable.ResultIterable

    我试图找出为什么我的 groupByKey 返回以下内容 0
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何使用 Boto3 启动具有 IAM 角色的 EC2 实例?

    我无法弄清楚如何使用指定的 IAM 角色在 Boto3 中启动 EC2 实例 以下是迄今为止我如何成功创建实例的一些示例代码 import boto3 ec2 boto3 resource ec2 region name us west 2
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是

随机推荐

  • 使用 numpy 进行数组重新分类

    我有一个包含 10 位数字的大型 50000 x 50000 64 位整数 NumPy 数组 数组中大约有 250 000 个唯一数字 我有第二个重新分类表 它将第一个数组中的每个唯一值映射到 1 到 100 之间的整数 我希望将第一个数组
  • 无法从 Orchard 模块中的项目文件夹加载图像

    我正在尝试在 Orchard 模块中插入图像 但遇到了一些问题 img src Href Modules Orchard Slider Content img other jpg gt 在我看来 我写了这个 但是图像没有加载 它说找不到资源
  • 如何修复 jslint The '&&' subexpression should bewrapped in parens 错误

    我将所有内容都放在括号中 但下面的代码仍然在 jslint 中抛出错误 Problem at line 5 character 104 The subexpression should be wrapped in parens if typ
  • .htaccess 导致所有页面被下载

    我添加了以下行 htaccess AddType application x httpd php html htm 当我尝试加载侧面的任何页面时 我的浏览器会尝试下载该页面 我究竟做错了什么 Thanks 最有可能的 您没有为您的网络服务器
  • 将 JLabels 置于 JPanel 中心

    我正在制作一个记分程序 但遇到了问题 我试图做的是在顶部有一个 JPanel 其中包含两个 JPanel 而 JPanel 又包含两个团队名称 我很困惑为什么程序顶部的两个 JLabel 没有位于它们所包含的 JPanel 内部的中心 im
  • c_str 的使用是否带有异常未定义行为?

    我见过几个类似的代码片段 如下所示 struct MyExcept std exception explicit MyExcept const char m noexcept message m const char what const
  • 如何运行在关闭 PuTTY SSH 会话后仍然运行的 Linux 命令?

    我通过 putty 连接到我的 NAS 它在上面运行 Linux 我想将一个大目录从一个位置移动到另一个位置 关闭 Putty 会话后是否可以保持进程运行 我担心如果我关闭腻子 文件将不会被复制到最后 使用 nohup 开始任务 并使用 将
  • jQuery ui 选项卡中的多个 jQgrid

    我遇到一个问题需要帮助 我有 3 个 jQueryUI 选项卡 第一个包含项目网格 第二个保存工单网格 第三个只是发出警报以验证显示功能是否正常工作 问题是我在第二个选项卡上没有网格 第一个负载正常 如果我注释掉第一个选项卡的代码 第二个网
  • Ruby on Rails:自定义操作

    我是rails新手 所以我向你解释一下我的情况 我有一个用户模型和一个用户控制器 用户使用电子邮件地址和密码登录 特殊用户可以通过在表单中 输入受邀者的电子邮件地址并点击提交来邀请其他用户 然后 受邀用户会收到一封邮件 其中包含用于激活其帐
  • MySQL RAND() 种子值几乎重复

    在 Windows 7 上使用 MySQL 5 6 21 我试图从按日期播种的表中返回 随机 行 因此同一行返回当天 然后切换第二天等 如果您愿意 可以是 当天生成器的随机引用 我注意到相同的行不断出现 因此我将查询简化为基础 看来 RAN
  • GO - WaitGroups 参考中的指针或变量

    根据sync包中的以下函数声明 添加 gt func wg WaitGroup Add delta int 完成 gt func wg WaitGroup Done 等待 gt func wg WaitGroup Wait 我知道它们都是由
  • 如何自动启动 Android 应用程序?

    我不确定如何在 Android 模拟器完成启动后自动启动 Android 应用程序 有人有任何代码片段可以帮助我吗 您必须添加清单权限条目
  • JPA @EmbeddedId:如何更新复合主键的一部分?

    我有一个多对多关系 其中链接表有一个附加属性 因此 链接表也由实体类表示 称为Composition 主键为Composition is an Embeddable链接到相应的实体 例如 2 ManyToOne参考 用户在选择两个引用中的任
  • 通过对其他列数据进行随机采样来创建新列

    我想通过从剩余列中随机采样数据来创建一个新列 考虑一个具有 N 列的数据框 如下所示 Column 1 Column 2 Column N 0 37 0 8 0 0
  • HTML 助手值得与复杂的标记一起使用吗?

    我应该坚持使用 HTML 助手 还是只使用纯 HTML 我使用 HTML 助手已经有一段时间了 并且非常喜欢使用它们 最近我开始使用 CSS 框架 例如推特引导程序我发现我的标记太复杂 无法使用标准 HTML 帮助程序 当然我还是用Url
  • 在 Shiny 中使用多个 tabPanel 时如何包含 showModal 和 modalDialog (如弹出窗口)

    我正在努力创建一个由多个选项卡组成的闪亮窗口 每个选项卡内都有一个下面的表单shinysurveys可以被填满 应用程序设计的代码可以显示选项卡及其内容 为了使应用程序提供更多信息 我想添加一条在每次单击 Tab1 时出现的消息 并且由于
  • 如何将字符串(例如“iso-8859-1”)转换为其 String.Encoding 对应项?

    从 Swift 发送 HTTP 请求后 我在响应中得到一个名为textEncodingName 我想转换data我还收到了一个包含其内容的字符串 为此 我使用String data data encoding utf8 这在大多数情况下都有
  • 如何在Android应用程序被杀死之前执行代码

    我有一个连接到周围设备的 Android 应用程序当前运行相同的应用程序 即使在后台 为此 我使用 WiFI Direct 来宣传我当前正在运行所述应用程序的事实 因此 一旦应用程序被终止 我就需要停止广告 onDestroy 无法使用 因
  • 如何将输入 File 对象序列化为 JSON?

    我想将 HTML 输入文件转换为 JSON 字符串 如下所示 var jsonString JSON stringify file console log file console log jsonString 现在 在我的 Firebug
  • 如何从类中访问Python模块的私有变量

    在 Python 3 中 为类变量添加前缀使其成为私有的 通过修改类中的名称 如何访问类中的模块变量 例如 以下两种方法不起作用 a 3 class B def init self self a a b B 结果是 Traceback mo