Python:使用虚拟类来传递变量名称?

2024-04-23

这是后续返回一个字典的函数,其键是输入参数的名称 https://stackoverflow.com/questions/9586305/python-function-that-returns-a-dict-whose-keys-are-the-names-of-the-input-argum/9586506#9586506,我学到了很多东西(释义):

  • 总的来说,Python 对象不知道它们的名字。
  • 不,这一般来说是不可能的*args。您必须使用关键字参数
  • 当参数数量固定时,您可以这样做locals
  • 使用全局变量()。仅当值在模块范围内唯一时才有效,因此它很脆弱
  • 无论如何,你最好不要这样做并重新思考这个问题。

第一点强调了我对 Python 变量的根本误解。反应非常有教育意义,几乎是即时的,显然这是一个很好理解但很容易混淆的话题。

由于我想学习如何正确地做事,创建一个虚拟类来简单地保存带有附加名称的变量是否被认为是不好的做法?

class system: pass
S = system ()
S.T = 1.0
S.N = 20
S.L = 10

print vars(S)

这实现了我最初的意图,但我想知道是否有一些我没有考虑到的东西可能会在以后咬我。


我这样做是为了向 Javascript 致敬,在 Javascript 中,字典和实例变量之间没有任何区别。我认为它不一定是反模式,也是因为与字典不同,如果你没有值,它会引发 AttributeError 而不是 KeyError,并且更容易发现名称的拼写错误。正如我所说,这不是反模式,前提是

  1. 类的范围仅限于非常特定的用途
  2. 您调用的例程或方法(例如示例中的变量)本质上是私有的。我不希望有一个具有调用语义的公共接口,也不希望它作为返回的实体
  3. “虚拟”类的名称在其意图及其代表的聚合类型方面非常明确。
  4. 该对象的生命周期短暂且平静。它只是一个临时的数据包。

如果不遵守这些约束,请选择具有属性的完全认可的类。

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

Python:使用虚拟类来传递变量名称? 的相关文章

  • 如何将一组重叠范围划分为不重叠范围?

    假设您有一组范围 0 100 一 0 75 b 95 150 c 120 130 d 显然 这些范围在某些点上重叠 您将如何剖析这些范围以生成不重叠范围的列表 同时保留与其原始范围相关的信息 在本例中为范围后面的字母 例如 运行算法后的上述
  • 防止脚本目录被添加到Python 3中的sys.path

    有没有办法阻止脚本的目录被添加到python3中的sys path 由于导入在 python 中是相对的 因此我遇到了导入冲突 我正在处理的一个遗留项目有一个名为logger py在与内置冲突的脚本的根目录中logger 我使用的自定义构建
  • 当图例位于轴之外时选择 matplotlib 图例

    当我修改 legend picking py 示例时 我遇到了一个有趣的怪癖 其中图例位于轴之外 如下所示 leg ax legend loc upper left fancybox True shadow True leg ax lege
  • 通过 SSH 的 Pygame 不注册击键(Raspberry Pi 3)

    所以我得到了 raspi 3 和简单的 8x8 LED 矩阵 在玩了一些之后 我决定用 pygame 的事件制作一个简单的蛇游戏 显示在该矩阵上 我之前没有 pygame 的经验 除了 LED 矩阵之外 没有连接任何屏幕 显示器 所以最初的
  • 具有相同内容的拆分列表

    例如我有以下列表 contents i have two pens prices 5 made in and 我想将它们分开 使其具有与以下内容相同的内容 array 0 i have two pens array 1 prices 5 a
  • 如何使用scrapy抓取xml url

    你好 我正在使用 scrapy 来抓取 xml url 假设下面是我的 Spider py 代码 class TestSpider BaseSpider name test allowed domains www example com s
  • 如何使用Python在没有窗口的情况下在屏幕上显示文本

    问题 我需要在没有窗口的情况下直接将文本写入屏幕 文本需要显示在所有其他窗口和全屏应用程序之上 并且不应以任何方式单击或交互 Example The text doesn t need to have a transparent backg
  • Scrapy 仅抓取每个页面的第一个结果

    我目前正在尝试运行以下代码 但它只保留每个页面的第一个结果 知道可能是什么问题吗 from scrapy contrib spiders import CrawlSpider Rule from scrapy contrib linkext
  • 使用 Python 读取 App Engine 上的文件?

    是否可以在 GAE 上打开文件来读取其内容并获取最后修改的标签 我收到 IOError Errno 13 文件无法访问 我知道我无法删除或更新 但我相信阅读应该是可能的 有人遇到过类似的问题吗 os stat f r st mtim 您可能
  • 带有 UnboundLocalError 的本地和全局引用

    我不太明白为什么代码 def f print s s foo f 运行得很好但是 def f print s s bar s foo f 给我 UnboundLocalError 我知道我可以通过声明来解决这个问题s作为函数内的全局变量或简
  • 根据Python中两行之间的匹配创建一个带有[0,1]的新列

    我正在尝试将多个列表或数据帧与一个大型基础数据帧进行比较 然后对于任何匹配 我想附加一个存储 1 匹配或 0 不匹配的列 df pd DataFrame Name A B C D ID 5 6 6 7 8 9 7 list1 5 6 8 9
  • Flask-Mail - 基于 Flask-Cookiecutter 异步发送电子邮件

    我的烧瓶项目基于烧瓶饼干切割机 https github com sloria cookiecutter flask我需要异步发送电子邮件 发送电子邮件的功能由以下配置米格尔的教程 https blog miguelgrinberg com
  • 如何在 Mac OS X 10.8 上安装 hg Convert 所需的 python subversion 绑定?

    我正在寻找一种解决方案 最好是干净且简单的 以启用hg convert使用 SVN 存储库在 OS X 10 8 上工作 目前 如果您尝试转换 SVN 存储库 您将得到一个could not load Subversion python b
  • Python Pandas DateOffset 使用另一列中的值

    我以为这会很容易 但下面的内容并不适合我想要的 只是尝试通过使用另一列中的值将天数添加到预先存在的日期时间列来计算新的日期列 我下面的 偏移 列只有 1 位数字 df new date df orig date apply lambda x
  • 使用 MinGW 链接到 Python

    我不想创建一个嵌入Python解释器的跨平台程序 并用MinGW编译它 但是 Python 二进制发行版没有提供 MinGW 链接的库 仅python32 lib对于 Visual C 并且 Python 源包不提供使用 MinGW 编译的
  • 获取 pandas 中最后一次出现特定值之后的所有行

    我的数据框看起来像 ID colA 1 B 1 D 2 B 2 D 2 C 我已返回每组中事件 B 最后一次出现后的所有行 输出将是 ID colA 1 D 2 D 2 C 我试过 a df colA str contains B grou
  • 将文本文件转换为 plink PED 和 MAP 格式

    我有以下数据 其中的一小部分 名为 short2 pre snp tumor txt rs987435 C G 1 1 1 0 2 rs345783 C G 0 0 1 0 0 rs955894 G T 1 1 2 2 1 rs608879
  • 从多个大型 NetCDF 文件中提取数据的快速/高效方法

    我只需要从全局网格中提取特定节点集的数据 由纬度 经度坐标 按 5000 10000 的顺序 给出 这些数据是水力参数的时间序列 例如波高 全局数据集很大 因此分为许多 NetCDF 文件 每个 NetCDF 文件大小约为 5GB 包含整个
  • 类型提示:解决循环依赖

    以下产生NameError name Client is not defined 我该如何解决 class Server def register client self client Client pass class Client de
  • 类、模块、它们的特征类和方法查找

    我们来开公开课吧Module并向其中添加一个方法 class Module def foo puts phew end end 我可以通过这样做来调用这个方法 Class foo 这是可以理解的 因为类Class is Class 其超类是

随机推荐

  • 如何从同一台机器上运行的 Docker 加载主机中运行的 MongoDB 中的数据?

    我正在 Ubuntu 18 02 机器上通过以下命令运行 Pytorch docker 容器 Run Pytorch container image docker run it v home ubuntu Downloads docker
  • xcode 5 无法看到旧 iOS 项目中的 NSLog(s)

    我有一个旧的iOS6我去年玩过的应用程序 它只适合我的妻子 所以我从未发布过它 但我想掸掉它 看看它是否对其他人有用 所以我把它加载到XCode5 5 0 2 在 10 8 4 上运行 我也在我的家用笔记本电脑上尝试过这个 运行相同的XCo
  • 如何在 Xamarin Forms 中的其他项目之上显示 ListView?

    I have a ListView that displays recent Search items I have added it in the Stack Layout of my Main page I want to show L
  • HTML 输入文件按用户选择顺序进行多重排序

    如果用户选择多个文件 则需要按用户选择优先级排序 如facebook FileList 需要取决于用户顺序 这是示例代码 function handleFileSelect evt var files evt target files Fi
  • gestureRecognizer:shouldReceive Touch:没有被调用

    gestureRecognizer shouldReceive Touch 方法未被调用 是我设置不当吗 id init UILongPressGestureRecognizer touchHold UILongPressGestureRe
  • ContinueWith() 内的函数不起作用

    public void Login string email emailInputField text string password passwordInputField text auth SignInWithEmailAndPassw
  • 寻找短语共现矩阵的有效算法

    我有一个包含大约 40 000 个短语的列表 L 和一个包含大约 1000 万个单词的文档 我想检查的是哪一对短语同时出现在 4 个单词的窗口内 例如 考虑 L 棕色狐狸 懒狗 该文件包含 一只敏捷的棕色狐狸跳过懒狗 的字样 我想看看 棕色
  • 获取表的某些列只有空值

    我需要知道一张表的哪些列只有空值 我知道我应该在 user tab columns 中执行循环 但是如何仅检测具有空值的列呢 感谢并抱歉我的英语 要在事先不知道列标识的情况下执行查询 需要使用动态 SQL 假设您已经知道该表不为空 您可以执
  • 如何为静态变量分配内存?

    在下面的程序中 class Main static string staticVariable Static Variable string instanceVariable Instance Variable public Main Th
  • Micro USB 音频 - Android 开放配件

    好的 我正在从事一个处于研究阶段的独立项目 我浏览了互联网 没有发现关于这个话题的任何好东西 我发现的网站在编程社区中与 StackOverflow 一样各自独立 使用 Android 2 3 4 Gingerbread 中包含的 Andr
  • 固定表格标题与水平和垂直滚动主体

    目标 表头和表体的列宽应相同 表格标题固定在垂直滚动条上 要在水平滚动上移动的表标题 标头显示在 HTML 的可滚动部分内 问题陈述 表格标题在垂直滚动时未固定 标题显示在 HTML 的可滚动部分之外 当标题位置固定时 我看过很多帖子 但找
  • 带有图像和分隔符的完全对齐的水平菜单

    I would like to achieve this fully justified horizontal menu 对齐是通过 Flexbox 完成的并且有效 但是我也无法使分隔的中点对齐 它们是通过伪类使用 css content
  • 解决 SML/NJ 编译管理器中的库冲突

    我正在使用 SML NJ 110 79 其中包括对 Successor ML 项目定义的新结构的支持 其中 Fn https github com SMLFamily BasisLibrary wiki 2015 005 Addition
  • 如何访问小部件的属性

    我是 Yii 框架的新手 我正在尝试访问小部件的属性 比如说 CMenu 我想更改一些公共属性的值 如 activeCssClass firstItemCssClass lastItemCssClass htmlOptions 等 那么你怎
  • 如何在 sveltekit 应用程序中将菜单项设置为活动状态

    我一直在开发 sveltekit 应用程序 最近我的主导航菜单遇到了问题 当加载或刷新应用程序时 与当前 URL 对应的当前菜单项不会设置为活动状态 即菜单项 Home 的 URL 为 我很难在网上找到任何有用的东西来演示如何设置它 但我有
  • BND 将相同的包放入manifest.mf 的导出和导入部分

    我有一个 Vaadin 应用程序 我正在尝试使用 Maven BND 将其构建为一组 OSGI 包 我无法将捆绑包部署到 Apache Felix 因为某些依赖项无法解决 Apache Felix 抱怨找不到捆绑包 A 所需的包 XYZ 尽
  • 如何降级旧版 Android 中的 java.time 代码?

    我有这个简洁的代码 它生成两个日期之间的天数列表 然后是当天的日期 以及它在列表中的位置 最重要的是 所有日期都采用相同的格式 这使得很容易比较它们 Create list of days String s 2018 08 28 Strin
  • 用于 AR 的 Android 视频流捕获

    我希望能够从 Android 手机摄像头捕获视频 然后处理该视频 处理涉及向直播流添加一层 AR 这在安卓上可行吗 很确定应该是这样 我查看了android网站 http developer android com guide topics
  • 如何检测设备是否支持刘海屏?

    目前我面临着检测移动设备是否支持 Android 中的缺口显示的问题 任何人都可以帮助我吗 我需要使用 android studio 中的代码来完成此操作 Thanks 一些奥利奥设备也有凹口显示 如果您的目标是支持所有操作系统 那么您可以
  • Python:使用虚拟类来传递变量名称?

    这是后续返回一个字典的函数 其键是输入参数的名称 https stackoverflow com questions 9586305 python function that returns a dict whose keys are th