Python:如何在给定时间调用字典包含的可调用对象?

2024-01-25

我正在使用 python 中的字典对象,其中包含许多键。它们的一些关联值类型是可调用类型。

就像是 :

dico = {
    'key1'      : 1,
    'key2'      : 'cars',
    'key3'      : <bound method MyClass.MyMethod_A of <MyClass: MyClass object >>,
    'deeperkeys': {
        'subkey1' : 'space',
        'subkey2' : <bound method MyClass.MyMethod_B of <MyClass: MyClass object >>,
    },
}

我知道我能做到:

dico['key3']                  = dico['key3']()
dico['deeperkeys']['subkey2'] = dico['deeperkeys']['subkey2']()

此外,请注意,我不在 unic 上工作dico如上所述,但在一个巨大的清单上dico- 像字典一样。另外,我有时不知道必须调用哪些键。 有区别地、先验地调用所有可调用对象的最佳方法是什么?

upd

继 Jon Kiparsky 之后,我添加了@property每个方法定义上方的装饰器。它通过颠倒问题来达到了目的。没有可调用对象,但使用此装饰器调用方法到源定义MyClass。我的字典列表就是从中生成的!


虽然我不以任何方式推荐这一点 - 请参阅我对原始问题的评论 - 嵌套结构通常需要递归下降。您将编写一个函数来检查字典的 value() 列表中的每个值并执行以下三件事之一:

  • 如果该值是可调用的,则调用它
  • 如果值为字典,则进行递归调用
  • 否则,跳过它。

实际上,与探索文件树没有太大不同。

然而,我不会为重复这一点而道歉,重要的是在这里检查您的实际问题并决定这是否真的是您想要做的事情。我看不出这是一个很好的解决方案。

编辑:根据OP的进一步信息,看起来@property装饰器可能是所需要的。使用示例:

>>> class Foo:
...     @property
...     def current_time(self):
...             from datetime import datetime
...             return datetime.now()
... 
>>> f = Foo()
>>> f.current_time
datetime.datetime(2014, 12, 10, 15, 29, 35, 146096)
>>> f.current_time
datetime.datetime(2014, 12, 10, 15, 29, 42, 383874)

请注意,该语法评估current_timename 就好像它是一个简单的值一样,但返回的值是调用函数的结果,导致评估时的值,我认为这就是您所追求的。

(但正如 @abarnert 观察到的,你将这些放入字典中,所以这对你不起作用)

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

Python:如何在给定时间调用字典包含的可调用对象? 的相关文章

随机推荐

  • Delphi XE2:调用 WinAPI EnumResourceNames 导致 Win64 平台中的访问冲突

    在Delphi XE2 Win32平台上运行以下代码可以正常工作 然而 在 win64 平台上编译的相同代码如果在调试模式下运行 将导致 EnumRCDataProc 中的访问冲突 procedure TForm2 Button1Click
  • 在目录中查找部分字符串匹配的文件

    我有一个包含以下文件的目录 apple1 json gz apple2 json gz banana1 json gz melon1 json gz melon2 json gz 我希望找到所有的apple banana and melon
  • Python解析包含函数、列表和字典的字符串

    我正在尝试找到方法来解析可以包含用 python 语法编写的变量 函数 列表或字典的字符串 并用 分隔 空格应该在任何地方都可以使用 因此当它不在 或 内时 请用 分隔 示例字符串 variable function1 1 3 functi
  • 从分支获取最新 Git 提交哈希的命令

    如何使用命令行检查特定 Git 分支的最新提交哈希值 git log n 1 branch name branch name 可能是远程或本地分支 是可选的 没有branch name 它将显示当前分支上的最新提交 例如 git log n
  • Clang - 将 C 标头编译为 LLVM IR/位码

    假设我有以下简单的 C 头文件 foo1 h typedef int foo typedef struct foo a char const b bar bar baz foo bar 我的目标是获取这个文件 并生成一个看起来像这样的 LL
  • 树莓派-gpio (sysfs) 上的 poll() 树莓派

    正如标题所述 我在将一些用户空间中断代码从另一个 armv7 嵌入式 Linux 平台移植到 Raspberry Pi 2 Model B 时遇到问题 我知道 WiringPi 库 并让它以这种方式工作 但出于评估原因 我希望在两个平台上运
  • 无法同时处理点击和触摸事件

    我正在尝试处理按钮上的触摸事件和单击事件 我执行以下操作 button setOnClickListener clickListener button setOnTouchListener touchListener 当注册任何一个侦听器时
  • Windows 每种语言版本的默认代码页

    在哪里可以找到有关 Windows 每种语言版本的默认代码页的信息 即 ANSI 每种语言版本的代码页 我找到了Windows 支持的代码页 http msdn microsoft com en us goglobal bb964654 a
  • 构建 AOSP 并添加具有运行时权限的系统应用程序

    我在 Android 6 AOSP 上工作 我能够构建添加应用程序作为系统应用程序 但现在我想在这个系统应用程序上默认添加运行时权限 这样应用程序就可以启动而无需要求用户验证权限 你知道我该怎么做吗 谢谢你的帮助 如果您的应用程序具有特权
  • 为什么 getSelectedItem 返回 null?

    我刚刚学习 OOP 对这篇基本文章感到抱歉 我不知道为什么当我尝试获取所选项目的值时它返回 nullJComboBox public class AddEmployee extends javax swing JInternalFrame
  • 所见即所得与所见即所得

    在基于 Web 的应用程序中 哪一个更好 更理想 Edit 实际上我正在开发一个社区网站 所以用户的水平可能会有所不同 听说 WYSIWYG 编辑器存在 XSS 安全问题 我也不熟悉所见即所得编辑器及其功能 据我所知WYSIWYM 编辑器中
  • python-从json对象中选择唯一的键值

    我有一个json回复 data id 1 name Tom age 24 id 2 name Nick age 45 id 3 name Harry age 18 id 1 name Tom age 29 count 4 而且我要outpu
  • Heroku“psql:致命:剩余的连接插槽保留用于非复制超级用户连接”

    我正在 Heroku 上开发一个带有 Postgresql 后端的应用程序 当我尝试从 CLI 和在服务器上加载页面访问数据库时 我会定期收到此错误消息 psql FATAL remaining connection slots are r
  • 结构体作为 Go 映射中的键

    我正在研究使用结构作为 golang 映射中的键 该结构中的字段也应该是映射 这似乎与提供的文档相悖here http blog golang org go maps in action这表示只有具有可比较字段的结构 and 可以位于用作映
  • 什么是 weblogic.socket.Muxer?

    你们中有人了解 weblogic socket Muxer 在 WebLogic 8 1 中的用途吗 我经常在线程转储中看到类似于以下的堆栈跟踪 ExecuteThread 0 for queue weblogic socket Muxer
  • HttpContext.Current.User 始终为 null

    我有一个 WCF 服务 它有一个方法可以返回正在使用该服务的 Silverlight 客户端的 Windows 用户名 WCF 服务使用 basicHttpBinding 并将 TransportCredentialOnly 模式设置为 W
  • 与适用于 Mac 的三星智能电视 sdk 4.1 配合使用

    我有一个愚蠢的问题 我安装 2013 Samsung TV SDK 4 1 MacOS pkg 并下载 2013 Smart TV Emulator 4 1 VB zip 和虚拟盒的安装 ova 文件 所以我想终于一切都完成了 但不是 当我
  • 如何让 JTIdy 使 HTML 文档格式良好?

    我正在使用 JTidy v r938 我正在使用这段代码来尝试清理页面 final Tidy tidy new Tidy tidy setQuiet false tidy setShowWarnings true tidy setShowE
  • Rails 在集成测试中设计经过身份验证的路由

    我想测试应用程序中的每条路线 并了解到我应该在集成测试中执行此操作 在 ruby on Rails 中测试路线的位置 https stackoverflow com questions 5290245 where to test route
  • Python:如何在给定时间调用字典包含的可调用对象?

    我正在使用 python 中的字典对象 其中包含许多键 它们的一些关联值类型是可调用类型 就像是 dico key1 1 key2 cars key3