【问题标题】:What procedure is called if "someVariable['key'] = value" is executed如果执行“someVariable['key'] = value”,会调用什么过程
【发布时间】:2019-01-30 20:39:31
【问题描述】:

我正在尝试为我的应用程序编写一个带有 C-API 的 python 接口。
我可以创建一个模块并添加过程并将它们导入 python 上下文中。然后我可以运行 python 脚本来访问模块和过程。

我想使用密钥访问数据,例如:
module.someVar['key'] = 值

打印(module.someVar['key'])

然后我想在 C 代码中的一个过程中使用密钥和数据。
pyTypeObject中调用了什么过程?

编辑:SomeVar 是我必须创建的类型的变量。 是的,在 cmets 之后,它是一个类似 dict 的对象。 看来第一个答案指出了我的正确点,我目前正在测试它。

【问题讨论】:

  • 什么是someVar?它的类型是你写的类型吗?
  • 听起来像一个 dict 对象
  • 所以你想在扩展模块中定义一个像字典一样的对象?如果这是您想要的,请编辑您的问题以使其清楚。

标签: python c-api


【解决方案1】:

Container types

我认为您正在寻找 __getitem____setitem__

例如:

class C:
    def __getitem__(self, item):
        print(f"a['{item}'] called")

    def __setitem__(self, item, value):
        print(f"a['{item}'] = {value} called")

a = A()
a["get"]
>> a['get'] called
a["set"] = 0
>> a['set'] = 0 called

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 2012-04-18
    • 2016-01-11
    • 2011-05-16
    • 1970-01-01
    • 2015-07-22
    • 2013-06-24
    • 2010-11-15
    相关资源
    最近更新 更多